assertThat() 总是成功的
assertThat() is always successful
我有一个测试没有在应该失败的时候失败:
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
}
怎么可能?
assertThat returns BooleanAssert 并且实际上没有断言任何东西。
AssertJ 提供了流畅的 API 因此您需要在此之后调用断言方法:
assertThat(
transactionController.create(id, transactionResource).getStatusCode().equals(200)
).isTrue();
但您似乎不需要 AssertJ。 JUnit 自己的 assertTrue 就足够了:
assertTrue(transactionController.create(id, transactionResource).getStatusCode().equals(200));
甚至更好,assertEquals:
assertEquals(200, transactionController.create(id, transactionResource).getStatusCode());
我会使用:
assertThat(operation.getStatusCode()).isEqualTo(200);
正如@default locale 所述,assertThat(false)
确实不检查任何内容,您可以使用 findbugs 检测到这种不良用法,如此处所述http://joel-costigliola.github.io/assertj/assertj-core.html#faq-incorrect-api-usage。
我有一个测试没有在应该失败的时候失败:
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
}
怎么可能?
assertThat returns BooleanAssert 并且实际上没有断言任何东西。
AssertJ 提供了流畅的 API 因此您需要在此之后调用断言方法:
assertThat(
transactionController.create(id, transactionResource).getStatusCode().equals(200)
).isTrue();
但您似乎不需要 AssertJ。 JUnit 自己的 assertTrue 就足够了:
assertTrue(transactionController.create(id, transactionResource).getStatusCode().equals(200));
甚至更好,assertEquals:
assertEquals(200, transactionController.create(id, transactionResource).getStatusCode());
我会使用:
assertThat(operation.getStatusCode()).isEqualTo(200);
正如@default locale 所述,assertThat(false)
确实不检查任何内容,您可以使用 findbugs 检测到这种不良用法,如此处所述http://joel-costigliola.github.io/assertj/assertj-core.html#faq-incorrect-api-usage。