2017-10-12 2 views
2

Gradle n'exécute pas mon test JUnit avec les annotations @Category et @RunWith.La tâche de test Gradle ne s'exécute pas Test JUnit avec les annotations @Category et @RunWith

Java 8, Gradle 4.2.1.

Ma classe JUnit:

public interface FastTest { 
} 

@Category(FastTest.class) 
@RunWith(PowerMockRunner.class) 
public class MyTest { 
    @Test 
    public void testMyMethod() { 
     // Test method should fail 
     assertTrue(false); 
    } 
} 

Mon build.gradle:

apply plugin: 'java' 

repositories { mavenCentral() } 

dependencies { 
    compile "junit:junit:4.12" 
    compile "org.powermock:powermock-core:1.6.5" 
    compile "org.powermock:powermock-api-mockito-common:1.6.5" 
    compile "org.powermock:powermock-module-junit4:1.6.5" 
    compile "org.powermock:powermock-api-mockito:1.6.5" 
} 

test { 
    scanForTestClasses = false 

    useJUnit { includeCategories 'FastTest' } 
} 

Si je supprime l'annotation RunWith, Gradle exécute le test. Le paramètre scanForTestClasses = false n'a aucun effet.

+0

Non, il doit être Gradle. – isobretatel

+0

Il semble que PowerMock remplace l'annotation @Category par un proxy: https://stackoverflow.com/questions/13377634/runwithpowermockrunner-class-does-not-work-with-package-annotation?rq=1 – isobretatel

Répondre

3

Problème signalé: https://github.com/gradle/gradle/issues/3189.

PowerMock remplace l'annotation de catégorie avec un proxy: RunWith(PowerMockRunner.class) does not work with package annotation

Solution: Ajouter l'annotation PowerMockIgnore à la classe JUnit:

@PowerMockIgnore({ "org.junit.experimental.categories.Category", "mypackage.FastTest" }) 
@Category(FastTest.class) 
@RunWith(PowerMockRunner.class) 
public class MyTest { 
    @Test 
    public void testMyMethod() { 
     // Test method should fail 
     assertTrue(false); 
    } 
} 
+1

Merci pour cela a couru dans ce même problème. Il est à noter que "FastTest" doit également être le nom de package/classe complet, tout comme "Category" est entièrement qualifié. – doeiqts