2012-03-07 25 views
14

Estoy intentando migrar de Ant build a Gradle en mi proyecto. Hay un montón de casos de prueba (subclases de junit.framework.TestCase) y pocos conjuntos de prueba (subclases de junit.framework.TestSuite). Gradle recogió automáticamente todos los casos de prueba (subclases de junit.framework.TestCase) para ejecutar, pero no las suites (subclases de junit.framework.TestSuite).¿Cómo ejecutar Junit TestSuites desde gradle?

Probablemente podría evitar llamar a ant.junit para ejecutarlo. Pero, creo que debería haber una manera nativa fácil de forzar a Gradle a que los recoja y corra. No pude encontrar nada en el documento. ¿Me estoy perdiendo de algo?

+1

usted parece estar en contradicción con uno mismo ... usted dice que 'Gradle recogió automáticamente todos los casos de prueba que se ejecutarán'. Entonces, ¿el problema es que los compiló, pero no los ejecutó? Por favor aclara –

+0

@c_maker: he editado el texto para mejorar la claridad. Gracias por señalar. – James

Respuesta

13

Esto fue difícil para mí averiguar, pero aquí es un ejemplo:

// excerpt from https://github.com/djangofan/WebDriverHandlingMultipleWindows 
package webdriver.test; 
import http.server.SiteServer; 
import java.io.File; 
import java.io.IOException; 
import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ TestHandleCacheOne.class, TestHandleCacheThree.class, TestHandleCacheThree.class }) 
public class SuiteOne extends MultiWindowUtils { 

    public static SiteServer fs; 

    @BeforeClass 
    public static void setUpSuiteOne() { 
     File httpRoot = new File("build/resources/test"); 
     System.out.println("Server root directory is: " + httpRoot.getAbsolutePath()); 
     int httpPort = Integer.parseInt("8080"); 
     try { 
      fs = new SiteServer(httpPort , httpRoot); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     initializeBrowser("firefox"); 
     System.out.println("Finished setUpSuiteOne"); 
    } 

    @AfterClass 
    public static void tearDownSuiteOne() { 
     closeAllBrowserWindows(); 
     System.out.println("Finished tearDownSuiteOne"); 
    } 

} 

Y un build.gradle similar a esto:

apply plugin: 'java' 
apply plugin: 'eclipse' 
group = 'test.multiwindow' 

ext { 
    projTitle = 'Test MultiWindow' 
    projVersion = '1.0' 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.+' 
    compile group: 'junit', name: 'junit', version: '4.+' 
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.+' 
} 

task testGroupOne(type: Test) { 
    //include '**/*SuiteOne.*' 
    include '**/SuiteOne.class' 
    reports.junitXml.destination = "$buildDir/test-results/SuiteOne") 
    reports.html.destination = "$buildDir/test-results/SuiteOne") 
} 

task testGroupTwo(type: Test) { 
    //include '**/*SuiteTwo.*' 
    include '**/SuiteTwo.class' 
    reports.junitXml.destination = "$buildDir/test-results/SuiteTwo") 
    reports.html.destination = "$buildDir/test-results/SuiteTwo") 
} 
+0

Debo decir que desde que publiqué esta respuesta, la DSL para configurar las pruebas unitarias ha cambiado un poco. Así que ten cuidado. – djangofan

Cuestiones relacionadas