我们将 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/