Тестирование ненулевого параметра в Kotlin - PullRequest
1 голос
/ 20 сентября 2019

новинка для Kotlin здесь!

Я только что переключил Java тестовый код на Kotlin , и конкретный случай нулевых кодов вызывает у меня проблемы.Я пытаюсь проверить (в сегменте кода Kotlin @ Test ), вызывает ли эта java-функция правильное значение InvalidParameterException :

void addEventListener(
            @NonNull DeviceEventListener listener,
            @Nullable CompletionListener completionListener);

Так что эта функция вызывается через Kotlin код (который работал до преобразования из java в kotlin) примерно так: До Java:

deviceTest.addEventListener(null, testCompletionListener);
waiter.expect(InvalidParameterException.class);

Тест работал без ошибок.

ПослеПри переходе на Kotlin код становится недоступным или вызывает KotlinNullPointerException :

deviceTest!!.addEventListener(null!!, testCompletionListener)
waiter!!.expect(InvalidParameterException::class.java)

Я новичок в Kotlin и серьезно заблудился, как заставить его работать так же, как это было раньше в Java.Есть идеи?

Спасибо, что нашли время!

1 Ответ

0 голосов
/ 20 сентября 2019

Во-первых, в вашем примере вы используете @NonNull, но я предполагаю, что вы имели в виду @NotNull, так как это правильная аннотация, используемая Kotlin.

Во-вторых, я предполагаю, что вы подходите к написаниютестирует в Kotlin, но все еще использует эти функции в коде Java.В противном случае, если ваша кодовая база только на Kotlin, этот тест не имеет смысла.

В-третьих, если вы попытаетесь присвоить null параметру @NotNull, вы должны получить IllegalArgumentException, а не InvalidParameterException

Наконец, вы можете использовать типы платформ для симуляции этой ситуации:

// This should be a Java class
public class Nulls {
    public static final DeviceEventListener NULL_DEVICE_EVENT_LISTENER = null;
}

// In Kotlin
deviceTest.addEventListener(Nulls.NULL_DEVICE_EVENT_LISTENER, testCompletionListener)

Но так как Nulls в любом случае является классом Java, вы можете просто оставить весь тест как Java,как было предложено в комментариях.

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