当前位置: 首页 > 知识库问答 >
问题:

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

慕容文昌
2023-03-14
<?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);
    }
}
  1. 单元测试方法上方是否需要注释?
  2. 是否需要在方法前缀“test”,或者这只是用于JUnit测试?
  3. 可以在nilzor.myapp.tests的子包中进行测试吗?

但是这篇文章的主要问题是为什么测试运行者没有检测到我的测试?

共有1个答案

方建明
2023-03-14

您需要为您的测试类提供默认构造函数,例如:

package nilzor.myapp.tests;

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

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

关于你的其他问题:

>

  • 否。我的测试仍然在没有任何注释的情况下运行,但我想有注释是一个很好的实践。它允许您指定要运行的测试的大小。了解@smalltest、@mediumtest和@largetest注释在Android中的用途吗?了解更多细节。

  •  类似资料:
    • 我正在使用空手道9.0。0并并行运行功能文件,并使用空手道并行运行代码生成cucumber报告。问题在于,在功能概述中的报告中,它将总执行时间显示为 特征1执行时间特征2执行时间特征3执行时间=总执行时间 但是,如果在多个线程中并行运行特性,则实际执行时间会更短。如何显示和计算测试套件的运行时间。

    • 22.13.7.测试报告 测试任务默认生成以下结果. 一份HTML测试报告 一个与Ant的JUnit测试报告任务兼容的XML.这个格式与许多其他服务兼容,如CI serves 结果是有效的二进制,测试任务会从这些二进制结果生成其他结果。 有一个独立的TestReport任务类型会根据一些Test任务实例生成的二进制源码生成一个HTML报告.使用这种测试类型,需要定义一个destinationDir

    • 当运行单元测试的时候,Gradle 会输出一份 HTML 格式的报告以方便查看结果。Android plugin 则将所有连接设备的测试报告都合并到一个 HTML 格式的报告文件中。所有测试结果都以 XML 文件形式保存到 build/reports/androidTests/ 中(类似于 JUnit 的运行结果保存在 build/reports/tests 中)。可以自定义路径: android

    • 5.4 测试报告 当运行单元测试的时候,Gradle 会生成一份 HTML 报告以便于查看测试结果。 Android plugins 在这个基础上扩展了 HTML 报告,以合并所有已连接设备上的测试结果。 5.4.1 单工程报告 在运行测试的时候工程会自动的生成报告,默认位置是: build/reports/androidTests 这和 jUnit 报告的位置 build/reports/tes

    • 我在Android Studio3.0.1和Kotlin中运行时遇到了一些问题(我在以前的Android Studios和Java中没有遇到这样的问题)。我在包中创建了这个(非常简单的)类[reference],它如下所示: 当我尝试运行测试时,有两个问题。首先,它希望在控制台中运行测试,而不打开仿真器或将apk包部署到设备(因为这只是一个正常的本地单元测试)。此外,我还会收到以下错误消息: 找不

    • 我需要从maven运行一系列测试。测试通过一系列自定义创建的脚本运行,这些脚本运行类似于qunit的东西,输出junit风格的xml文件,然后复制到target/surefire reports目录中。我想做的是让surefire插件打印我自己运行的测试结果。目前,surefire报告没有运行任何测试(正确,因为它实际上没有运行测试)。 我希望surefire能够找到由我的测试系统创建的junit