Как запустить Junit TestSuites из Gradle? - PullRequest
14 голосов
/ 07 марта 2012

Я пытаюсь перейти от сборки Ant к Gradle в моем проекте.Существует множество тестовых случаев (подклассы junit.framework.TestCase) и несколько наборов тестов (подклассы junit.framework.TestSuite).Gradle автоматически выбрал все тестовые случаи (подклассы junit.framework.TestCase) для запуска, но не наборы (подклассы junit.framework.TestSuite).

Я, вероятно, мог бы обойтись, вызвав ant.junit для его запуска.Но я чувствую, что должен быть простой способ заставить gradle выбрать их и запустить.Я не смог ничего найти в документе.Я что-то упустил?

1 Ответ

14 голосов
/ 09 февраля 2013

Мне было сложно это понять, но вот пример:

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

}

И build.gradle похож на это:

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")
}
...