15

I am trying to migrate from Ant build to Gradle in my project. There are a bunch of test cases (subclasses of junit.framework.TestCase) and few test suites (subclasses of junit.framework.TestSuite). Gradle automatically picked up all test cases(subclasses of junit.framework.TestCase) to be run, but not the suites (subclasses of junit.framework.TestSuite).

I probably could work around by calling ant.junit to run it. But, I feel there should be a native easy way to force gradle to pick them and run. I couldn't find anything in the document . Am I missing something?

spiegelm
  • 65
  • 7
James
  • 151
  • 1
  • 1
  • 4
  • 1
    You seem to be contradicting yourself... you are saying that 'Gradle automatically picked up all test cases to be run.' So the problem is that it compiled them, but did not run them? Please clarify. – c_maker Mar 07 '12 at 23:25
  • @c_maker: I've edited the text to improve clarity. Thanks for pointing out. – James Mar 08 '12 at 11:42

1 Answers1

15

This was hard for me to figure out, but here is an example:

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

}

And a build.gradle similar to this:

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")
}
djangofan
  • 28,471
  • 61
  • 196
  • 289
  • 1
    I should say that since I posted this answer the DSL for configuring unit tests has changed a bit. So, beware. – djangofan Feb 16 '16 at 16:32