【问题标题】:Parameterized instrumentation tests on AndroidAndroid 上的参数化仪器测试
【发布时间】:2013-05-03 02:55:48
【问题描述】:

我正在尝试为特定的Activity 编写批处理仪器测试(使用ActivityInstrumentationTestCase2),每次测试运行时我都会更改意图。我可以通过一个测试来做到这一点,只需循环停止并以新的意图重新启动 Activity,但这不是我想要的。一个原因是它们确实应该是单独的测试运行。另一个原因是,我在测试完成时使用Spoon 生成报告,并且报告会正确地认为我只运行了一个测试。

我希望将单个测试视为可能无限数量的测试,并在每次测试运行时将数据传递给测试。

很遗憾,您不能使用Theories,因为它会导致 InstrumentationTestRunner 无法找到我的测试的 RuntimeException。有谁有这方面的运气吗?

【问题讨论】:

    标签: android junit instrumentation spoon


    【解决方案1】:

    您总是可以创建一个“测试”意图。为了模拟应用程序的重新启动,请创建一个或多个方法来重置测试之间的所有静态变量。然后,您可以使用

    从应用程序本身内部的测试意图中测试类
    assert("value", MyClass.myMethod);
    resetStatics();
    assert(true, MyClass,myMethod);
    resetStatics();
    

    我不知道这对你有多大帮助,但这是我开始编写自己的测试的方式。

    【讨论】:

      【解决方案2】:

      我最近发现你可以在一个测试类中添加一个public static Test suite() 方法,当你只运行这个单一的测试类时,InstrumentationTestRunner 将运行这个方法返回的Test。这很有帮助,因为suite() 可以显式调用TestCase 的任何构造函数,包括带参数的构造函数。

      【讨论】:

      • 我正在寻找将数据传递给测试方法,而不是类
      • @ChristopherPerry 为您要测试的每个值创建一个新的测试对象是标准的 JUnit 范例。
      • 这不一定是真的。看这里:blogs.oracle.com/jacobc/entry/junit_theories,当我的测试方法完全相同,只是数据不同时,创建一个新的测试对象是没有意义的。
      猜你喜欢
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多