I have started testing and now i want to use @After
, @Before
and @Test
but my application only runs the @Before
method and gives output on console
before
However, if I remove @After
and @Before
it runs the @Test. My code is here:
public class TestPractise extends AbstractTransactionalDataSourceSpringContextTests{ @Before public void runBare(){ System.out.println("before"); } @Test public void testingMethod(){ System.out.println("testing"); } @After public void setDirty(){ System.out.println("after"); } }
Why aren't @After
, @Test
and @before
working simultaneously?
@After - method that is run after every test case.
Methods annotated with the @Before annotation are run before each test.
The @Before annotation is used when different test cases share the same logic. The method with the @Before annotation always runs before the execution of each test case. This annotation is commonly used to develop necessary preconditions for each @Test method.
This base class has a @Before ( public void setUp() ) and @After ( public void tearDown() ) method to establish API and DB connections.
Use @BeforeEach
instead of @Before
and @AfterEach
instead of @After
.
The AbstractTransactionalDataSourceSpringContextTests
class forces the use of the old JUnit 3.x syntax, which means that any of the JUnit 4 annotation will not work.
Your method runBare()
is executed not because of the @Before
annotation, but because it is named runBare()
, which is a method provided by ConditionalTestCase
and JUnit TestCase
class.
So you have 2 solutions:
AbstractTransactionalDataSourceSpringContextTests
, but use the onSetUp
and onTearDown
methods instead of the @Before
and @After
methods.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With