![](/img/trans.png)
[英]Class not found: Empty test suite when running unit tests in Android Studio
[英]Android Studio running unit test shows 'Empty test suite'
我想开始为我的应用程序编写单元测试,但我无法运行一个简单的测试。 我创建了一个小应用程序,只是为了尝试如何设置和运行单元测试,但实际上没有测试,我得到'空测试套件'。
我正在使用带有gradle 1.12的Android Studio 0.6.1
这是我的文件夹结构:
MyActivityTest.java
package com.vist.testableapp.tests;
import android.content.Intent;
import android.test.ActivityUnitTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.widget.Button;
import com.vist.testableapp.MyActivity;
import com.vist.testableapp.R;
public class MyActivityTest extends ActivityUnitTestCase<MyActivity>
{
public MyActivityTest(Class<MyActivity> activityClass)
{
super(activityClass);
}
Button btn1;
@Override
public void setUp() throws Exception
{
super.setUp();
startActivity(new Intent(getInstrumentation().getTargetContext(), MyActivity.class), null, null);
btn1 = (Button)getActivity().findViewById(R.id.button1);
}
@SmallTest
public void testFirst()
{
assertEquals("Btn1",btn1.getText());
}
}
应用程序的build.gradle
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
applicationId "com.vist.testableapp"
minSdkVersion 15
targetSdkVersion 15
versionCode 1
versionName "1.0"
testApplicationId "com.vist.testableapp.tests"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
任何人都可以指出我做错了什么或我错过了什么? 我搜索过,但没有一个答案对我有帮助。
构造函数应如下所示:
public MyActivityTest()
{
super(MyActivity.class);
}
我需要学习不要过多依赖IDE提供构造函数的代码模板。 感谢一位同事和http://siemprepreguntando.blogspot.de/2013/07/running-tests-test-running-startedtest.html解决了这个问题。
我最近也遇到了“空测试套件”问题。 在检查了几个类似的问题和答案以及我的问题后,我可以得出结论,问题是由于错误导致测试被添加到测试套件中,例如静态初始化中的错误。
例如,我使用一种流行的方法来添加所有测试,如下所示,但是使用不同的方法向套件中添加测试用例的情况相同:
public class FullTestSuite extends TestSuite {
public static Test suite() {
return new TestSuiteBuilder(FullTestSuite.class)
.includeAllPackagesUnderHere().build();
}
public FullTestSuite() {
super();
}
}
显然我的测试文件在静态{}块中出现问题,导致.includeAllPackagesUnderHere()成功运行。
因此,我建议任何面临此错误的人首先检查您的应用程序日志,看看您的测试是否遇到了阻止测试用例被添加到测试套件的问题(就像被调用的错误构造函数的类似示例或静态初始化问题)。
就我而言,“空测试套件”消息与我运行的Android模拟器的目标API级别直接相关。 我已经设置了一个API级别为19的模拟器,并在尝试运行我的仪器测试时使用它。 我最近也迁移了我的代码库,以使用JUnit4框架和AndroidJUnitRunner instrumentation runner。
在我开始研究实际模拟器的问题之前,我正在把头撞到墙上一段时间。 果然,只要我设置了一个API级别为23的仿真器,测试就开始运行了。
进一步的实验发现我的测试在API Level 22和23模拟器上运行良好,但在下面没有任何东西。 我怀疑它与我的测试依赖关系和最低API级别要求有关。
如果我发现更多,我会更新这个答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.