Android上的参数化仪器测试

Android上的参数化仪器测试,android,junit,instrumentation,spoon,Android,Junit,Instrumentation,Spoon,我正在尝试为特定的活动编写一个批处理检测测试(使用ActivityInstrumentationTestCase2),每次测试运行时我都会更改意图。我可以通过一个测试来实现这一点,只需使用新的意图循环停止和重新启动活动,但这不是我想要的。一个原因是它们实际上应该是单独的测试运行。另一个原因是,我正在使用在测试完成时生成一个报告,该报告将正确地认为我只运行了一个测试 我希望将单个测试视为可能无限多的测试,并在每次测试运行时将数据传递到测试中 不幸的是,您无法使用,因为它会导致运行时异常,其中Ins

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

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


不幸的是,您无法使用,因为它会导致运行时异常,其中InstrumentationTestRunner无法找到我的测试。任何人都有这样的运气吗?

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

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

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

我最近发现,您可以向测试类添加一个
公共静态测试套件()
方法,当您只运行这个测试类时,
InstrumentationTestRunner
将运行此方法返回的
测试。这是很有帮助的,因为
suite()
可以显式调用
TestCase
的任何构造函数,包括带有参数的构造函数。

我想将数据传递给测试方法,而不是class@ChristopherPerry为每个要测试的值创建一个新的测试对象是标准的JUnit范例。这不一定正确。请参见此处:,当我的测试方法完全相同,只是数据不同时,创建新的测试对象是没有意义的。