2012-03-07 3 views
14

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

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

+1

Вы, кажется, себе противоречите ... вы говорите, что «Gradle автоматически собирает все тестовые сценарии для запуска». Так что проблема в том, что она скомпилировала их, но не запускала их? Просьба уточнить. –

+0

@c_maker: Я редактировал текст, чтобы улучшить ясность. Спасибо за указание. – James

ответ

13

Это было трудно для меня, чтобы выяснить, но вот пример:

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

Я должен сказать, что, поскольку я отправил этот ответ, DSL для настройки модульных тестов немного изменился. Итак, будьте осторожны. – djangofan

Смежные вопросы