安卓上参数化的仪器化测试

7
我正在尝试编写一个批量化的仪器测试(使用ActivityInstrumentationTestCase2),针对特定的Activity,每次测试运行时更改意图。我可以使用单个测试来完成这个过程,并循环停止和重新启动具有新意图的Activity,但这不是我想要的。一方面,它们确实应该是单独的测试运行。另一方面,我正在使用Spoon在测试完成时生成报告,而报告将正确地认为我只运行了一个测试。

我想要的是将单个测试视为可能无限数量的测试,并在每次测试运行时将数据传递到测试中。

不幸的是,您不能使用Theories,因为它会导致RuntimeException,在那里InstrumentationTestRunner找不到我的测试。有人在这方面取得了成功吗?

2个回答

0

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

assert("value", MyClass.myMethod);
resetStatics();
assert(true, MyClass,myMethod);
resetStatics();

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


0

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


我正在寻找将数据传递给测试方法,而不是类的方法。 - Christopher Perry
@ChristopherPerry 为每个要测试的值创建一个新的测试对象是标准的JUnit范例。 - Code-Apprentice
这并不一定是正确的。参见此处:https://blogs.oracle.com/jacobc/entry/junit_theories,如果我的测试方法完全相同,只有不同的数据,则创建一个新的测试对象毫无意义。 - Christopher Perry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接