我们将Android项目与Jenkins集成并自动执行单元测试但有问题。 即使单元测试失败,Jenkins构建也不会被破坏。
我们使用以下ANT目标进行单元测试:clean emma debug install test
我找到了plugin,但它没有提供我所期望的,它有一个后构建操作解析猴子测试结果,但没有一个用于单元测试。
是否可以解析构建输出并根据解析结果更改构建状态?或者在测试失败时打破构建的任何其他方法?
答案 0 :(得分:2)
我们将Log Parser Plugin与以下简单规则文件一起使用,您在构建操作后添加“控制台输出解析”,如果找到与下面的正则表达式Failure in test.*
匹配的任何行,则可以使构建不稳定。 / p>
# 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 :(得分:1)
如果在测试项目中使用Android JUnit report test runner,则运行Android单元测试将导致输出与JUnit兼容的XML文件。
测试运行完成后,您可以从模拟器中提取XML文件,然后让Jenkins的内置JUnit支持解析文件并根据需要更改构建结果。