Jenkins 上的 Android 单元测试

标签 android unit-testing ant jenkins break

我们将 android 项目与 Jenkins 集成并自动执行单元测试但遇到了问题。 即使单元测试失败,Jenkins 构建也不会中断。

我们使用以下 ANT 目标运行单元测试:clean emma debug install test

我找到了 plugin但它没有提供我所期望的,它有一个解析猴子测试结果的构建后操作,但没有用于单元测试的结果。

是否可以解析构建输出并根据解析结果更改构建状态?或者在测试失败时中断构建的任何其他方法?

最佳答案

我们使用了 Log Parser Plugin使用以下简单的规则文件,您添加“控制台输出解析”构建后操作,如果它发现任何与下面的正则表达式匹配的行,它可以使构建不稳定 Failure in test.*.

# 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)

关于Jenkins 上的 Android 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770142/

相关文章:

java - 在 Android 项目中包含 Natty

unit-testing - 使用 Go 语言进行测试的正确包命名

java - Apache Ant 正在创建奇怪的目录

java - JAR - 线程 "main"java.lang.NoClassDefFoundError : org/mortbay/jetty/Handler 中出现异常

java - Ant 构建失败 : "Target "build. .xml“不存在”

android - 访问远程执行Android代码

android - 通过 HTTP 访问 Web 服务时未获得所需的输出

android - 如何将命令行参数从 gradlew.bat 传递到 Android/NDK 上的 Clang

unit-testing - 如何在单元测试中以编程方式设置target_os?

python - 皮查姆 : Cant run unit tests with command line arguments