我正在使用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没有做任何事情。
我有什么基本的错误吗?还有其他方法可以选择类别吗?
答案 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