2013-05-08 97 views
5

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

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

不幸的是,您不能使用Theories,因为它导致RuntimeException,其中InstrumentationTestRunner找不到我的测试。任何人都有这个运气?

回答

0

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

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

我不知道多少,这会帮助你,如果在所有测试类,但我这是怎么开始写我自己的测试。

0

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

+0

我正在寻找将数据传递给测试方法,而不是类 – 2013-06-03 20:56:42

+0

@ChristopherPerry为每个要测试的值创建一个新的测试对象是标准的JUnit范例。 – 2013-06-03 22:48:42

+0

这不一定是真的。请参阅https://blogs.oracle.com/jacobc/entry/junit_theories,当我的测试方法完全相同时,仅使用不同的数据创建新的测试对象是没有意义的。 – 2013-06-04 05:05:45