在Android Kotlin中,assertNotNull导致单元测试无法运行

在Android Studio中,我创建了androidTest程序包并添加了一个TestClass@BeforeClass功能必须是静态的,因此我必须将其添加@JvmStatic到中companion object

但是如果放在assertNotNull()其中companion object,它将在运行测试时显示“空测试套件”,并且测试不会运行。但是它确实看到了"+++ +++ initBeforeTest()"放置在assertXXX语句之前的日志。

+++ +++ initBeforeTest()
++ +++ afterTest()

Client not ready yet..
Started running tests
Tests ran to completion.

Empty test suite.

如果我在同伴内部assertNotNull()@BeforeClass函数中注释掉,则测试将按预期运行。

+++ +++ initBeforeTest()
++ +++ afterTest()

Client not ready yet..
Started running tests

java.lang.AssertionError: test assertNotNull
at org.junit.Assert.fail(Assert.java:88)

知道为什么assertNotNull()(实际上是所有assertXXX函数)会导致测试无法运行吗?

摇篮具有:

testImplementation "junit:junit:4.12”
androidTestImplementation "com.android.support.test:runner:1.0.1”

测试类别:

@RunWith(AndroidJUnit4::class)
class TestClass {

    companion object {
        @BeforeClass @JvmStatic
        fun beforeTest() {
            Log.e("+++","+++ +++ initBeforeTest()")
            // if comment out this assertNotNull(), the test will run
            assertNotNull("test assertNotNull", null) //<== causes "Empty test suite."
        }

        @AfterClass @JvmStatic
        fun afterTest() {

        }
    }

    @Test
    fun test1() {
        assertNotNull("test assertNotNull", null)
    }
}
托德

请记住,如果您注释的方法@BeforeClass失败,那么Junit Runner将不会执行其余的套件。

由于您的断言(assertNotNull("test assertNotNull", null))失败,因此引发了一个异常(实际上是一个AssertionError),导致套件设置失败。反过来,这会使测试运行程序假定它没有测试。这就是为什么删除失败的断言将导致测试运行的原因(因为安装成功)。

如果将设置中的断言更改为此,我怀疑它会通过:

assertNull("test assertNull", null)

编辑:更清楚地说,当您使用时,assertNotNull您告诉Junit提供的值不能为null,在您的情况下为nullassertNotNull(“ test assertNotNull”)的第一个参数是一条消息,它将被合并到失败消息中(如您在提供的输出中所看到的)。第二个参数(在这种情况下为null)是不能为null的东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在Android Studio中运行单元测试

单元测试在运行时可以正常运行,但在Android Studio 4.1中调试时无法正常运行

使用Mockito在Android中运行的单元测试

在Android Studio中运行所有单元测试

Flutter 在 Android Studio 中运行多个单元测试

Android 中的单元测试

Android中的单元测试?

Android Kotlin协程单元测试

在Android Studio中运行参数化单元测试时,找不到给定的测试包含错误

找不到类:在Android Studio中运行单元测试时,测试套件为空

Android单元测试

Android中的单元测试isNetworkAvailable()

单元测试Android Activity中的方法

Hamcrest中的NoSuchMethodError与Android单元测试

Android中单元测试的奇怪行为

在Android Studio中创建单元测试

单元测试Android,资源中的getString

Android Kotlin Espresso断言单元测试中的预期活动会引发错误

java.lang.NoClassDefFoundError:测试模块无法解析其他功能模块的类,单元测试-Kotlin-Android

是否可以在@BeforeClass注释方法中运行Android Espresso单元测试?

使用Spock框架运行Android单元测试

在Android Studio的“保存”上运行单元测试

Android FEST无法针对IDE中的单元测试正确编译

Android单元测试跳过测试类中的行

Android:执行单元测试时,Android支持中的IllegalStateException

无法选择我的Android模块进行单元测试

Android 单元测试领域

单元测试Android功能

基本的android单元测试