Jenkins上的Android单元测试

3
我们将Android项目与Jenkins集成,并自动执行单元测试,但出现了问题。即使单元测试失败,Jenkins构建也不会中断。
我们使用以下ANT目标运行单元测试:clean emma debug install test 我找到了这个插件,但它没有提供我期望的功能,它有一个后置构建操作来解析monkey测试结果,但没有用于单元测试的操作。
有没有可能解析构建输出并根据解析结果更改构建状态?或者其他任何方法在测试失败时中断构建?
2个回答

2
我们使用日志解析插件和以下简单的规则文件,你可以添加“控制台输出解析”后构建操作,如果发现任何匹配以下正则表达式Failure in test.*的行,则可能导致构建不稳定。请注意保留HTML标签。
# match line starting with 'error ', case-insensitive
error /Failure in test.*/

它与以下示例相匹配:
[exec] Failure in testAndroidTestCaseSetupProperly:
[exec] junit.framework.AssertionFailedError: test
[exec] at tr.com.turkcell.turkcellid.SecureStorageTests.setUp(SecureStorageTests.java:22)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
[exec] 
[exec] Failure in testDelete:
[exec] junit.framework.AssertionFailedError: test
[exec] at tr.com.turkcell.turkcellid.SecureStorageTests.setUp(SecureStorageTests.java:22)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
[exec] 
[exec] Failure in testFail:
[exec] junit.framework.AssertionFailedError: test
[exec] at tr.com.turkcell.turkcellid.SecureStorageTests.setUp(SecureStorageTests.java:22)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
[exec] 
[exec] Failure in testReadWithFalseEnryptionKey:
[exec] junit.framework.AssertionFailedError: test
[exec] at tr.com.turkcell.turkcellid.SecureStorageTests.setUp(SecureStorageTests.java:22)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
[exec] 
[exec] Failure in testWriteRead:
[exec] junit.framework.AssertionFailedError: test
[exec] at tr.com.turkcell.turkcellid.SecureStorageTests.setUp(SecureStorageTests.java:22)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

1
如果你在测试项目中使用Android JUnit report test runner,运行你的Android单元测试将导致生成一个符合JUnit标准的XML文件。
当测试运行完成后,你可以从模拟器中提取XML文件,然后让Jenkins内置的JUnit支持解析该文件并根据需要更改构建结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接