В Android Kotlin assertNotNull заставляет модульный тест не запускаться - PullRequest
0 голосов
/ 31 мая 2018

В Android Studio я создал пакет AndroidTest и добавил TestClass.Функция @BeforeClass должна быть статической, поэтому мне нужно добавить @JvmStatic и поместить ее в companion object.

Но если поместить assertNotNull() в companion object, она будет отображать «Пусто».test suite ”, когда тест выполняется, а тест не запускается.Но он видит журнал "+++ +++ 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) заставляет тест не запускаться?

Gradle имеет:

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

1 Ответ

0 голосов
/ 31 мая 2018

Имейте в виду, что если метод, который вы аннотировали @BeforeClass, потерпит неудачу, Junit Runner не выполнит остальную часть пакета.

Поскольку ваше утверждение (assertNotNull("test assertNotNull", null)) не выполняется, генерируется исключение (на самом деле AssertionError), вызывающее сбой установки пакета.Это, в свою очередь, заставляет бегуна предположить, что у него нет тестов.Вот почему удаление ошибочного утверждения приведет к запуску тестов (поскольку установка прошла успешно).

Если вы измените свое утверждение в настройке на это, я подозреваю, что оно пройдет:

assertNull("test assertNull", null)

Изменить : чтобы быть более ясным, когда вы используете assertNotNull вы говорите Junit, что предоставленное значение не может быть нулевым , и в вашем случае это так.Первый аргумент assertNotNull («test assertNotNull») - это сообщение, которое будет включено в сообщение об ошибке (как вы можете видеть в предоставленном вами выводе).Вторым аргументом (в данном случае пустым) является то, что не может быть нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...