【问题标题】:Android Units Tests on JenkinsJenkins 上的 Android 单元测试
【发布时间】:2013-12-25 07:18:36
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android unit-testing ant jenkins break


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您在测试项目中使用Android JUnit report test runner,则运行 Android 单元测试将导致输出与 JUnit 兼容的 XML 文件。

      测试运行完成后,您可以从模拟器中提取 XML 文件,然后让 Jenkins 内置的 JUnit 支持解析文件并根据需要更改构建结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-16
        • 2012-06-29
        • 2013-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 2011-08-27
        相关资源
        最近更新 更多