Android Studio 1.5使用junit单元测试,以及“Test running startedTest running failed: Instrumentation run failed due to 'java.lang.RuntimeException' Empty test suite”

Android Studio 1.5创建的工程,会生成两个默认的测试目录:test,androidTest,其中,test目录为在本机执行单元测试代码的目录,androidTest为在Android设备上执行单元测试代码的目录。

目录如下图所示:

android_test_directory

对于新建的工程,默认会生成相应的测试代码例子。如下图所示:

android_unit_test_example_file

请注意上图的两个文件图标的差别,一个文件的图标的右上角是两个三角标记,另一个文件的右下角是个时钟的标记。

右击androidTest目录下的ApplicationTest.java,就会出现执行测试用例的菜单。如下图:

android_unit_test_run_test_menu

但是当右击test目录下的ExampleUnitTest.java则没有任何的运行菜单。如下图:

test_menu_no_run_or_debug_menu

那么,如何执行test目录下的ExampleUnitTest.java呢?

操作方法为"View"->"Tool Windows"->"Build Variants",然后,切换Test ArtifactAndroid Instrumentation TestsUnit Tests
如下图:

Build_Variants_Menu

切换Test Artifact

Build_Variants_Window

可以看到,切换完成后,两个文件的图标互换了一下:

UnitTest_File_Icon_Switch

此时右击test目录下的ExampleUnitTest.java则会出现Run 'ExampleUnitTest',Debug 'ExampleUnitTest'的菜单了。

如下图:

ExampleUnitTest_Run_Debug_Menu

至于

Test running startedTest running failed: Instrumentation run failed due to 'java.lang.RuntimeException' 
Empty test suite

这个问题,是由于Android Studio 的BUG,导致的,一般是没有执行上述的切换命令,然后右击test目录下的ExampleUnitTest.java依旧会出现Run 'ExampleUnitTest',Debug 'ExampleUnitTest'的菜单,然后点击后,会让我们选择运行的设备,这个时候,明显是把我们当作可以在设备上运行的测试用例了,因此,找不到是必然的。

应对这个BUG的解决方法,就是清理代码,然后重新加载工程,一般可以解决这个问题了。

发布者

《Android Studio 1.5使用junit单元测试,以及“Test running startedTest running failed: Instrumentation run failed due to 'java.lang.RuntimeException' Empty test suite”》上有5条评论

  1. 感谢您在文章最后您在最后关于“Instrumentation run failed due to 'java.lang.RuntimeException'
    Empty test suite”问题的文字,解决了我的问题。
    但我觉得说的步骤有些模糊,我的做法是直接使用Gradle clean代码,然后再重新运行是OK了。
    还有您说如果是Android Studio的Bug,请问您是在哪里看到的说明,可否将它贴出来。谢谢。

    1. Android Studio早期版本BUG蛮多的,最近升级到2.1以上的版本,稳定性,BUG要少了很多了,这些BUG是由于IntelliJ IDEA 的预先编译导致的,一方面预先编译好的文件会大大加快编译速度,另一方面,不可避免有时候会出现文件已经变化,但是却没有重新生成代码的情况。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注