Тестовый метод возвращает конкретный объект junit - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь создать свои первые тесты. Я должен доказать, что метод возвращает тип ContextLambda, я использую функцию assertSame, чтобы проверить его, но мой тест не проходит, я не знаю, какой assert использовать для проверки этого, с assertEquals также происходит сбой. мой тест примерно такой:

@Test
public void testCanCreateContextForLambda() {
    ContextFactory factory = new ContextFactory();

    LambdaContext context = factory.forLambda(
            new FakeRequest(),
            new FakeResponse(),
            new FakeLambda()
    );
    assertSame(LambdaContext.class, context);
}

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Ваше утверждение с assertSame утверждает, что LambdaContext.class == context. Это никогда не будет правдой.

Вы можете исправить свое утверждение несколькими способами

  • context instanceof LambdaContext будет тривиальным (всегда верно)
  • context.getClass() == LambdaContext.class будет почти тривиальным (вероятно, всегда верно)

Эти тесты могут быть написаны с использованием assertSame и assertTrue библиотеки junit5 (см. Другие ответы).

Мой лучший совет: прекратите этот тест и напишите тот, который утверждает нетривиальные свойства context.

0 голосов
/ 01 июля 2018

Попробуйте использовать instanceof и assertTrue: Включить импорт assertTrue:

import static org.junit.Assert.assertTrue;

А потом собственно тест:

@Test
public void testCanCreateContextForLambda() {
    ContextFactory factory = new ContextFactory();

    LambdaContext context = factory.forLambda(
            new FakeRequest(),
            new FakeResponse(),
            new FakeLambda()
    );
    assertTrue(context instanceof LambdaContext);
}

Это утверждение будет тривиальным и всегда будет истинным, если context является классом типа LambdaContext (используйте интерфейс, например, чтобы сделать его нетривиальным).

...