我需要在测试套件上运行2个测试类,一个是RestaurantModelTest
,另一个是CartModelTest.class
:
@Config(sdk = 16, manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class RestaurantModelTest {
//setUp code here...
@Test
public void testFindByLocation() throws Exception {
//test code here
}
}
所以我在网上关注了一些教程,他们指定用我的2个类来测试这样的TestSuite类:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
RestaurantModelTest.class,
CartModelTest.class
})
public class ModelsTestSuite {
}
然后我必须创建一个TestSuiteRunner类:
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestSuiteRunner {
public static void main(String[] args){
Result result = JUnitCore.runClasses(ModelsTestSuite.class);
for (Failure failure : result.getFailures()){
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
我正在使用android studio,当我讨厌右键单击>运行TestSuiteRunner ... main()我得到Exception in thread "main" java.lang.ClassNotFoundException:
任何帮助真的很感激!
答案 0 :(得分:1)
要在套件中运行所有测试,您需要做的就是:
ModelsTestSuite
即便如此,套件中的所有测试都将被执行。你真的不需要TestSuiteRunner
课程:
NB!在解决这个问题时,我发现了另一个奇怪的问题:除非我禁用即时运行(首选项 - >构建,执行,部署 - >即时运行 - >启用Instant Run - 取消选中)在Android Studio 2.0中,我的所有Robolectric测试都失败了java.lang.ClassNotFoundException
。 jFYI。
获得java.lang.ClassNotFoundException
的原因是普通java项目和Android项目不兼容。您可以在此处阅读更多内容:Can Android Studio be used to run standard Java projects?
因此,理论上,要以此形式拥有TestSuiteRunner
,您可以将其移动到单独的Java库模块并将Android应用程序的模块链接为此Java lib的依赖项。很遗憾,您会收到此警告:
警告:忽略模块&app 39的依赖关系在模块' lib'。 Java模块不能依赖于Android模块
即。它不会以这种方式工作。
我希望,这有帮助。