Pra*_*kar 36 junit android gradle android-studio
我创建了一个扩展AndroidTestCase的示例测试用例.当我运行测试用例时,它会说错误
Running tests
Test running startedTest running failed:
Instrumentation run failed due to 'java.lang.RuntimeException'
Empty test suite.
Run Code Online (Sandbox Code Playgroud)
测试用例
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import static org.junit.Assert.assertEquals;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.lang.Exception;
import java.lang.Override;
public class DateFormatTest extends AndroidTestCase{
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public DateFormatTest(){
super(DateFormatTest.class);
}
@SmallTest
public void testMultiply() {
assertEquals("10 x 5 must be 50", 50, 10*5);
}
}
Run Code Online (Sandbox Code Playgroud)
emi*_*der 12
从Android Studio运行测试时出现此错误.原来我把我的测试用例放在了错误的文件夹中.运行Gradle/Android Studio时,所有Android测试都应该在该文件夹中src/instrumentTest/java
.
编辑:在Gradle插件版本0.9或更高版本中,文件夹的正确名称是androidTest
.(http://tools.android.com/tech-docs/new-build-system/migrating_to_09)
kuh*_*nmi 10
我知道这个问题已经过时了,自从提出这个问题以来,开发工具已经发生了很大的变化.
但是,我有一个类似的问题(在AndroidStudio 2.1.1中),结果发现它只是错误消息,这是非常误导.对我来说它说:
Test running started
Test running failed: Instrumentation run failed due to 'java.lang.IllegalStateException'
Empty test suite.
Run Code Online (Sandbox Code Playgroud)
(注意:与原始问题的区别在于IllegalStateException与RuntimeException)
事实证明,这IllegalStateException
实际上是在应用程序上下文的初始化中引发的,这可以通过检查logcat输出来看出.因此,没有运行任何测试方法,并且Android Studio会将这种有些误导性的"空测试套件"错误写入.
即"空测试套件"可能意味着它实际上说(你没有任何的测试方法申报,如因您忘了与注释它们@Test
),但它也可能意味着某些因素(如运行时异常在应用程序初始化抛出代码)阻止测试运行器到达任何测试方法(这似乎是你的情况).
检查adb-logcat并搜索RuntimeException
s.这可能会找到问题的根本原因.
我遇到了同样的问题.我testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
在我的defaultConfig {...}
.我刚刚删除了该行,现在它正常工作(IDE正在构建时选择正确的运行时配置).
我希望这会对某人有所帮助.
我的问题是我有android studio生成的默认构造函数,看起来像这样
public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{
public SomeTest(Class<NewsActivity> activityClass) {
super(activityClass);
}
}
Run Code Online (Sandbox Code Playgroud)
我不得不改变它以摆脱这个问题
public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{
public SomeTest() {
super(ActivityYouWantToTest.class);
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚开始学习如何测试 Android 应用程序,并且一直在为同样的问题而苦苦挣扎。您需要为测试类提供默认构造函数,例如:
package nilzor.myapp.tests;
public class NilzorSomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{
public NilzorSomeTest(){
super(ActivityYouWantToTest.class);
}
@SmallTest
public void testBlah(){
assertEquals(1,1);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45562 次 |
最近记录: |