2014-10-04 24 views
45

Artık PowerMock kullanarak özel bir yöntemle dalga geçmek isteyen Gradle tabanlı bir Java projem var. Sorun şu ki, @RunWith(org.powermock.modules.junit4.PowerMockRunner.class) ek açıklamasını eklediğimde her zaman aşağıdaki özel durumu aldığım için PowerMockRunner'ı kullanamıyorum.PowerMockRunner ile JUnit testi çalıştırılamıyor

Hata:

org.powermock.reflect.exceptions.FieldNotFoundException: Field 'fTestClass' was not found in class org.junit.internal.runners.MethodValidator. 
at org.powermock.reflect.internal.WhiteboxImpl.getInternalState(WhiteboxImpl.java:581) 
at org.powermock.reflect.Whitebox.getInternalState(Whitebox.java:308) 
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate TestMethods(PowerMockJUnit4MethodValidator.java:79) 
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate InstanceMethods(PowerMockJUnit4MethodValidator.java:49) 
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:51) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108) 
... 

Bu benim test bağımlılıkları şunlardır:

testCompile 'junit:junit:4.+', 
      'org.powermock:powermock-core:1.5.6', 
      'org.powermock:powermock-module-junit4:1.5.6', 
      'org.powermock:powermock-api-mockito:1.5.6' 

testi kendisi de başarısız olduğunda tamamen boş (başlatma hatası):

@RunWith(PowerMockRunner.class) 
public class SomeTest { 
    @Test 
    public void testSomething() { 
    } 
} 

Herhangi bir fikir Neymiş yanlış olmak? PowerMock kullanan diğer testler iyi çalışıyor (hiçbiri PowerMockRunner'ı kullanmıyor).

Selamlar ve herhangi bir yardım için teşekkürler! Ben

cevap

66

JUnit 4.12 ve PowerMock < 1.6.1 kullandığınızda oluşan bir hatadır. Sorun PowerMock 1.6.1'de çözüldü. Eğer PowerMock yükseltemiyorsanız buna göre

testCompile 'junit:junit:4.12', 
      'org.powermock:powermock-core:1.6.1', 
      'org.powermock:powermock-module-junit4:1.6.1', 
      'org.powermock:powermock-api-mockito:1.6.1' 

o zaman JUnit 4,11 kullanabileceğiniz bağımlılıkları güncelleyin.

testCompile 'junit:junit:4.11', 
      'org.powermock:powermock-core:1.5.6', 
      'org.powermock:powermock-module-junit4:1.5.6', 
      'org.powermock:powermock-api-mockito:1.5.6' 

Sorun hakkında daha fazla ayrıntıyı ortaya koyan stacktrace'in başka satırlarını da ekleyebilirsiniz.

+0

Büyük teşekkürler! Gradle'ın beta sürümlerini de çekmesi normal bir davranış mı? – Ben

+2

4.12'de düzeltilmiş gibi görünmüyor ... – Mag

+2

Bu, PowerMock 1.6.1 ile neyse ki düzeltildi. – JeeBee

0

Kontrol Stefan söyledi ve yukarıda da testine hazırlanmak olmadan

@PrepareForTest({<The class/es you are Mocking>, ...}) 

eklemek için, PowerMockRunner alay edildiği sınıf bilemezsiniz gerekenler.

1

PowerMock karşı açmış bir hata olmuştur: https://code.google.com/p/powermock/issues/detail?id=531 JUnit böylece düzgün kendini enjekte etmek PowerMock için yeteneği kırma, PowerMock yansıma üzerinden erişen edildi iç alan adlarının bazı değişmiş görünür

.

İlgili konular