【问题标题】:Excluding unit tests from external library从外部库中排除单元测试
【发布时间】:2020-02-18 15:35:23
【问题描述】:

我在一个 Android 项目中新用 bouncyCastle 替换了 spongyCastle:

implementation "org.bouncycastle:bcpkix-jdk15on:$project.bouncyCastleVersion"

从那时起,在 Jenkins(我们的 CI)上似乎有从这个库执行的测试,这可能是真的吗?我从未见过带有自动执行单元测试的外部库。现在的问题是我看到许多失败的测试,例如:

org.bouncycastle.pqc.crypto.qtesla.QTeslaKeyEncodingTests.testDecodeEncodePrivateKeyQT3P    27 ms   1
 org.bouncycastle.pqc.crypto.qtesla.QTeslaKeyEncodingTests.testDecodeEncodePublicKeyQT3P

有没有办法从 gradle 中的导入库中排除所有单元 tets?

【问题讨论】:

  • 你执行测试的命令是什么?
  • ./gradlew --stacktrace testDebug createDebugCoverageReport mergeAndroidReports --continue ||真的
  • 如果您想跟踪 BouncyCastle 的潜在问题:github.com/bcgit/bc-java/issues/661

标签: android gradle bouncycastle


【解决方案1】:

build.gradle中可以使用以下任何单元测试来排除:

android {
  testOptions {
    unitTests {
      all {
        //exclude '**/QTeslaKeyEncodingTests.*'
        exclude 'org.bouncycastle/**'
      }
    }
  }
}

【讨论】:

    【解决方案2】:

    尝试将您的测试命令更改为:

    ./gradlew --stacktrace testDebug --tests=your.package.name createDebugCoverageReport mergeAndroidReports --continue || true
    

    【讨论】:

    • 我从不同的包运行测试,所以这在我的情况下不起作用。
    • 所有测试都在同一个模块中吗?或者它们也在不同的模块中?
    【解决方案3】:

    如果有帮助,我知道,但我的 CI 有一些与海绵城堡相关的问题。我通过忽略对其包裹的 linting 来解决它们。 在 app.gradle 中添加:

      lintOptions {
        lintConfig file("lint.xml")
      }
    

    lint.xml

    <lint>
      <issue id="InvalidPackage">
        <!-- ignore Invalid Package check for spongycastle -->
        <ignore path="**/*spongycastle*.jar"/>
      </issue>
    </lint>
    

    我的问题在于 linting,但您也可以忽略它进行测试。

    【讨论】:

    • 谢谢,但这并不能解决我的问题,我需要做的是禁用该库中的所有测试,单元测试。
    猜你喜欢
    • 2023-01-16
    • 2020-01-03
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多