【发布时间】:2013-01-01 03:30:47
【问题描述】:
我在这里撞墙,试图弄清楚为什么 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);
}
}
我已阅读testing fundamentals、activity testing document,并尝试遵循此Hello world test blog,即使它是针对 Eclipse 的。我无法让测试运行器找到并运行我的测试。我做错了什么?
我仍然不确定的一些问题是:
- 是否需要在单元测试方法上方添加注解?
- 我是否需要在方法前加上“test”,还是仅用于 JUnit 测试?
- 我可以在
nilzor.myapp.tests的子包中进行测试吗?
但是这篇文章的主要问题是为什么测试运行器没有检测到我的测试?
【问题讨论】:
-
对于第 3 点,如果您使用的是 Android Studio,我推荐使用
cmd+shift+t快捷方式,它将在与您当前正在编辑的类匹配的正确包位置自动创建一个测试类。 -
以防万一其他人像我一样缺席。确保您没有忘记将
@Test标记放在测试顶部。
标签: android intellij-idea