assertThat() 总是成功的

IKo*_*IKo 2 junit assert assertj

我有一个在应该时不会失败的测试:

import static org.assertj.core.api.Assertions.assertThat;

@Test
public void testTransactionResponse() {
    String id= "004";
    long amount= 5000001L;
    TransactionResource transactionResource = buildTransactionResource(amount, "EUR");
    System.out.println(transactionController.create(id, transactionResource).getStatusCode()); //the output is 403
    assertThat(transactionController.create(id, transactionResource).getStatusCode().equals(200)); //is true and test doesn't fail
}
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

def*_*ale 7

assertThat返回BooleanAssert并且实际上并不断言任何内容。

AssertJ 提供流畅的 API,因此您应该在此之后调用 assert 方法:

assertThat(
    transactionController.create(id, transactionResource).getStatusCode().equals(200)
).isTrue();
Run Code Online (Sandbox Code Playgroud)

但是,您似乎不需要 AssertJ。JUnit 自己的assertTrue就足够了:

 assertTrue(transactionController.create(id, transactionResource).getStatusCode().equals(200));
Run Code Online (Sandbox Code Playgroud)

甚至更好,assertEquals

 assertEquals(200, transactionController.create(id, transactionResource).getStatusCode());
Run Code Online (Sandbox Code Playgroud)