Android工作室为AndroidTestCase说"空测试套件"

 R-hehe 发布于 2023-02-09 19:30

我创建了一个扩展AndroidTestCase的示例测试用例.当我运行测试用例时,它会说错误

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

测试用例

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);
    }
}

Toerndev.. 17

因为没有其他人提到它:AndroidTestCase子类中的方法需要public并且名称以"test"开头!

OP和答案都是正确的但我错过了它并得到了完全相同的错误.

6 个回答
  • 我遇到了同样的问题.我testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 在我的defaultConfig {...}.我刚刚删除了该行,现在它正常工作(IDE正在构建时选择正确的运行时配置).

    我希望这会对某人有所帮助.

    2023-02-09 19:31 回答
  • 我的问题是我有android studio生成的默认构造函数,看起来像这样

    public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{
        public SomeTest(Class<NewsActivity> activityClass) {
            super(activityClass);
        }
    }
    

    我不得不改变它以摆脱这个问题

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

    2023-02-09 19:32 回答
  • 我知道这个问题已经过时了,自从提出这个问题以来,开发工具已经发生了很大的变化.

    但是,我有一个类似的问题(在AndroidStudio 2.1.1中),结果发现它只是错误消息,这是非常误导.对我来说它说:

    Test running started
    Test running failed: Instrumentation run failed due to 'java.lang.IllegalStateException'
    Empty test suite.
    

    (注意:与原始问题的区别在于IllegalStateException与RuntimeException)

    事实证明,这IllegalStateException实际上是在应用程序上下文的初始化中引发的,这可以通过检查logcat输出来看出.因此,没有运行任何测试方法,并且Android Studio会将这种有些误导性的"空测试套件"错误写入.

    即"空测试套件"可能意味着它实际上说(你没有任何的测试方法申报,如因您忘了与注释它们@Test),但它也可能意味着某些因素(如运行时异常在应用程序初始化抛出代码)阻止测试运行器到达任何测试方法(这似乎是你的情况).

    检查adb-logcat并搜索RuntimeExceptions.这可能会找到问题的根本原因.

    2023-02-09 19:32 回答
  • 我收到此错误是因为我的一个测试方法在方法签名后没有包含"throws exception".可能会帮助别人

    2023-02-09 19:32 回答
  • 从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)

    2023-02-09 19:32 回答
  • 因为没有其他人提到它:AndroidTestCase子类中的方法需要public并且名称以"test"开头!

    OP和答案都是正确的但我错过了它并得到了完全相同的错误.

    2023-02-09 19:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有