android - Android 测试项目中的参数化 JUnit 测试

标签 android unit-testing testing junit

当我在 JUnit 3.x 中创建参数化测试用例时,我通常会创建一个类似 TestSuite 的东西

public static Test suite() {
    TestSuite s = new TestSuite();

    for (int i = MIN; i < MAX; ++i) {
        s.addTest(new MyTest(i));
    }
}

当从桌面命令行运行 JUnit 时,此 suite() 方法被正确调用。当我用我的 Android 测试项目尝试这个时,测试没有运行。如何让我的测试在模拟器上运行?还是有其他方法可以为 Android 创建参数化测试?

更多想法:

通常我使用命令行运行我的测试:

adb shell am instrument -w [-e class <fully qualified test class name>[#<test method name>()]] <Android package name>/android.test.InstrumentationTestRunner

这允许我从我的测试套件中选择要运行的测试。理想情况下,我也想以这种方式运行参数化测试。 @Appu 评论中的链接描述了构建一个单独的应用程序来运行 JUnit 测试。作为其中的一部分,这个应用程序有一个自定义的 TestRunner。我很可能会借用这些想法来创建一个 TestRunner,我可以使用它来代替 android.test.InstrumentationTestRunner。对于一项并不少见的任务来说,这似乎需要大量工作。如果 Android API 中已经有类似的解决方案,我不想重新发明轮子。有谁知道这样的事情?此外,其他替代解决方案也会有所帮助。

没关系,看起来@dtmilano 已经发布了这个作为答案...

最佳答案

您可以实现一个测试运行器,以便能够将参数传递给 Android 测试。 请参阅 how to pass an argument to a android junit test (Parameterized tests) 处的示例.

关于android - Android 测试项目中的参数化 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017784/

相关文章:

android - Kotlin Android 创建和共享 CSV 文件

java - 为自定义迭代器编写测试用例

android - 对 PendingIntent.FLAG_CANCEL_CURRENT 文档的澄清

android - 使用 Galaxy Nexus 进行 Eclipse 调试

java - 如何检查 ArrayList 中对象的变量是否等于 ArrayList 中其他对象的任何相同变量

ruby-on-rails - Rails 4.2 下不使用固定装置进行特定单元测试

unit-testing - Jest - 'child_process' 包中的模拟函数

testing - 分支覆盖和 DU 路径

testing - TestCafe 适合 BDD 和 cucumber 吗?

scala - 使用 TestActorRef 测试 actor 崩溃