setUp () не вызывается в JUnit

#java #unit-testing #testing #junit

#java #модульное тестирование #тестирование #junit

Вопрос:

По какой-то причине метод setUp () моего тестового класса не вызывается перед моим тестовым методом.

 import static org.junit.jupiter.api.Assertions.*;
import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.Test;

class BlockchainAuctionTest {
    private BlockchainAuction auction;

@Before
public void setUp() {
    auction = new BlockchainAuction();
    System.out.println("setUp");
}

@After
public void tearDown() {
    System.out.println("tearDown");
}

@Test
void testOneBid() {
    Bid bid = new Bid("Bitcoin", "Devon", 1.0);
    assertTrue(auction.recordNewBid(bid), "first bid should be added without error");
}
}
  

В частности, я получаю исключение нулевого указателя в строке, которая гласит

assertTrue(auction.recordNewBid(bid), "first bid should be added without error");

потому что аукцион не был инициализирован. Я использую Eclipse.

Ответ №1:

Вы используете JUnit 5 @Test , но JUnit 4 @Before / @After .

Вам нужно использовать @BeforeEach / @AfterEach from org.junit.jupiter .

Ответ №2:

Судя по тому, как это выглядит, вы можете попробовать изменить импорт из

 import org.junit.jupiter.api.Test;
  

Для

 import org.junit.Test;
  

Ответ №3:

Что ж, для меня это сработало именно так. Я использовал:

import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach;

И это сработало. Я также использовал

import org.junit.Before;
import org.junit.Test;

Это также сработало. Любая другая комбинация у меня не сработала.