#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;
Это также сработало. Любая другая комбинация у меня не сработала.