使用gradle运行特定的junit4类别

时间:2017-03-10 09:25:44

标签: java android jenkins gradle junit

我正在使用gradle在Android手机上运行一些测试。但是,我希望能够选择要运行的测试。对于我正在使用jUnit4和类别的测试。

这是从jenkins构建和执行测试的方式:

Following code worked for me
 BusFactory bf = CXFBusFactory.newInstance();
        Bus bus = bf.createBus();
        bus.getInInterceptors().add(new LoggingInInterceptor());
        bus.getOutInterceptors().add(new LoggingOutInterceptor());


        //MyHTTPConduitConfigurer myHttpConduitConfig = new MyHTTPConduitConfigurer();

        bus.setExtension(new MyHTTPConduitConfigurer(), HTTPConduitConfigurer.class);

        JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(bus);


private static class SoapHTTPConduitConfigurer implements HTTPConduitConfigurer {
        public void configure(String name, String address, HTTPConduit c) {

            try{

                if(logger.isLoggable(Level.FINEST)) {
                    logger.log(Level.FINEST,"\n Setting TLS and Connection TimeOut :" );
                }
                HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();           
                httpClientPolicy.setConnectionTimeout(itfConfig.getConnectionTimeout());
                httpClientPolicy.setReceiveTimeout(itfConfig.getSoTimeout()); 
                c.setClient(httpClientPolicy);
                if(tlsParams!=null)
                 c.setTlsClientParameters(tlsParams);


            }catch(Exception ex){

            }


        }
    }

这是测试的样子:

call gradle assembleDebug assembleDebugAndroidTest
call gradle connectedDebugAndroidTest

在我的gradle.build中,我尝试了以下内容但没有成功:

@Category(IncludeTest.class)
@Test
public void test_Test_06() throws Exception {
    TestData.setUpTest("test_Test_06");
    Log.d("Test: Test 6 included");
}

@Category(ExcludeTest.class)
@Test
public void test_Test_07() throws Exception {
    TestData.setUpTest("test_Test_07");
    Log.d("Test: Test 7 excluded");
}

我的结构如下:

test {
  useJUnit {
    includeCategories 'com.abc.def.IncludeTest'
    excludeCategories 'com.abc.def.ExcludeTest'
  }
}

在java中,我有一个名为 com.abc 的软件包,在该软件包中还有另一个软件包 def 我的 IncludeTest ExcludeTest 接口在哪里。

我在gradle.build中尝试过不同的Include / ExludeTest路径,但它只是不起作用,所有测试都始终执行。

我还尝试将includeCategories / excludeCategories放入任务中,并确保该任务实际上已启动。但仍然执行所有测试。看起来像includeCategories / excludeCategories没有做任何事情。

我有什么基本的错误吗?还有其他方法可以选择类别吗?

1 个答案:

答案 0 :(得分:1)

经过一些研究后,我发现includeCategories / excludeCategories不适用于Android。

我在使用AndroidJUnitRunner时找到了不同的解决方案。在Gradle中,可以过滤注释测试。要包含注释:

call gradle connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.annotation=com.abc.def.IncludeTest

也可以使用 notAnnotation 来排除注释。

当然,如果您想使用OR / AND组合的多个注释,则会有语法。

如果您没有使用connectedDebugAndroidTest,也可以使用以下内容:

adb shell am instrument -w -e annotation com.android.foo.MyAnnotation com.android.foo/android.support.test.runner.AndroidJUnitRunner

一些文档:https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html