Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

assertThat() is always successful

I have a test that doesn't fail when it should:

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
}

How is it possible?

like image 367
IKo Avatar asked Nov 29 '25 14:11

IKo


1 Answers

assertThat returns BooleanAssert and doesn't actually assert anything.

AssertJ provides fluent API so you're expected to call assert methods after that:

assertThat(
    transactionController.create(id, transactionResource).getStatusCode().equals(200)
).isTrue();

But it doesn't seem that you need AssertJ for that. JUnit's own assertTrue would suffice:

 assertTrue(transactionController.create(id, transactionResource).getStatusCode().equals(200));

or even better, assertEquals:

 assertEquals(200, transactionController.create(id, transactionResource).getStatusCode());
like image 75
default locale Avatar answered Dec 02 '25 05:12

default locale



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!