为什么Android测试运行程序报告“空测试套件”?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

我在这里试图找出为什么IntelliJ / Android正在报告“空测试套件”。我有一个带有两个IntelliJ模块的小项目(Eclipse中的“项目”)。单元测试模块有自己的AndroidManifest.xml,我已经粘贴在底部。我试图运行一个ActivityUnitTestCase,因为测试将依赖于Context-object。

主模块的包名是nilzor.myapp。测试模块的封装名称是nilzor.myapp.tests

为什么测试运行人员没有将testBlah()方法作为测试进行检测?

<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="nilzor.myapp.tests"
          android:versionCode="1"
          android:versionName="1.0">
    <!-- We add an application tag here just so that we can indicate that
         this package needs to link against the android.test library,
         which is needed when building test cases. -->
    <application>
        <uses-library android:name="android.test.runner"/>
    </application>
    <!--
    This declares that this application uses the instrumentation test runner targeting
    the package of nilzor.myapp.  To run the tests use the command:
    "adb shell am instrument -w nilzor.myapp.tests/android.test.InstrumentationTestRunner"
    -->
    <instrumentation android:name="android.test.InstrumentationTestRunner"
                     android:targetPackage="nilzor.myapp"
                     android:label="Tests for nilzor.myapp"/>
</manifest>

这是我的测试类:

package nilzor.myapp.tests;

public class NilzorSomeTest<T extends Activity> extends ActivityUnitTestCase<T>{
    public NilzorSomeTest(Class<T> activityClass){
        super(activityClass);
    }

    @SmallTest
    public void testBlah(){
        assertEquals(1,1);
    }
}

提问于
用户回答回答于

我刚开始学习测试Android应用程序,并一直在努力解决同样的问题。您需要为您的测试类提供默认构造函数,例如:

package nilzor.myapp.tests;

public class NilzorSomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{
    public NilzorSomeTest(){
        super(ActivityYouWantToTest.class);
    }

    @SmallTest
    public void testBlah(){
        assertEquals(1,1);
    }
}

用户回答回答于

如果这“突然发生”或“它在5分钟前工作”,我的解决方案是进入运行/调试配置并删除“Android测试”下的任何配置。有时候,如果我重构被测试的类(例如移动到一个新的包),这些配置会被破坏:

扫码关注云+社区