2012-03-07 21 views
14

Sto provando a migrare da Ant build a Gradle nel mio progetto. Ci sono un sacco di casi di test (sottoclassi di junit.framework.TestCase) e pochi gruppi di test (sottoclassi di junit.framework.TestSuite). Gradle recupera automaticamente tutti i casi di test (sottoclassi di junit.framework.TestCase) da eseguire, ma non le suite (sottoclassi di junit.framework.TestSuite).Come eseguire Junit TestSuites da gradle?

Probabilmente avrei potuto aggirare il problema chiamando ant.junit per eseguirlo. Ma, credo che ci dovrebbe essere un modo semplice per forzare gradle a selezionarli e scappare. Non ho trovato nulla nel documento. Mi sto perdendo qualcosa?

+1

Lei sembra essere in contraddizione con se stessi ... stai dicendo che "Gradle ha raccolto automaticamente tutti i casi di test da eseguire". Quindi il problema è che li ha compilati, ma non li ha eseguiti? Si prega di precisare. –

+0

@c_maker: ho modificato il testo per migliorare la chiarezza. Grazie per la segnalazione. – James

risposta

13

Questo è stato difficile per me capire, ma qui è un esempio:

// 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"); 
    } 

} 

E un build.gradle simile a questo:

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

Devo dire che da quando ho postato questa risposta il DSL per la configurazione dei test di unità è cambiato un po '. Quindi, attenzione. – djangofan