在JUnit中未调用setUp()

时间:2019-03-20 05:10:13

标签: java unit-testing testing 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。

3 个答案:

答案 0 :(得分:3)

您使用的是JUnit 5 @Test,但使用的是JUnit 4 @Before / @After

您需要使用@BeforeEach中的@AfterEach / org.junit.jupiter

答案 1 :(得分:1)

从外观上,您可以尝试从

更改导入
import org.junit.jupiter.api.Test;

import org.junit.Test;

答案 2 :(得分:0)

好吧,对我来说,这就是它的工作方式。 我用过:

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


它奏效了。我也用过

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


它也起作用。其他任何组合都不适合我。