You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by Niclas Hedhman <ni...@hedhman.org> on 2018/04/17 02:09:48 UTC
JUnit 5 strange behavior
Gang,
if anyone has extensive experience with JUnit5, is there any explanation
that
@Override
@BeforeEach
public void setUp()
throws Exception
{
super.setUp();
will not be called when running the test, but if I change it to
@BeforeEach
public void setUp2()
throws Exception
{
super.setUp();
It will be called?
The super-class's method is
@BeforeEach
public void setUp()
throws Exception
{
polygene = new Energy4Java();
And IF I change to setUp2(), then the setUp() in the super class IS called
directly by junit platform engine.
Cheers
--
Niclas Hedhman, Software Developer
http://polygene.apache.org - New Energy for Java
Re: JUnit 5 strange behavior
Posted by Niclas Hedhman <ni...@hedhman.org>.
I am somewhat disappointed that JUnit5 is less predictable...
On Tue, Apr 17, 2018 at 10:35 AM, Niclas Hedhman <ni...@hedhman.org> wrote:
>
> For a while I thought the problem is that there is a hierarchy of abstract
> tests, and that there is 2 levels of inheritance between the MongoDb test
> and the AbstractPolygeneBaseTest, but IF I do the following test, it works
>
>
> import org.junit.jupiter.api.Assertions;
> import org.junit.jupiter.api.BeforeEach;
> import org.junit.jupiter.api.Test;
>
> public class Tests
> {
> public static class BaseTestClass {
>
> @BeforeEach
> public void setUp(){
> System.out.println("Base Test Class");
> }
> }
>
> public static class InheritsFromBase extends BaseTestClass {
>
> }
>
> public static class InheritsFromBase2 extends InheritsFromBase {
>
> }
>
> public static class ActualTests extends InheritsFromBase2 {
>
> @Override
> @BeforeEach
> public void setUp() {
> System.out.println("I inherit from base");
>
> super.setUp();
> }
>
> @Test
> public void myTest(){
> Assertions.assertTrue( true );
> }
> }
> }
>
>
> On Tue, Apr 17, 2018 at 10:09 AM, Niclas Hedhman <ni...@hedhman.org>
> wrote:
>
>>
>> Gang,
>> if anyone has extensive experience with JUnit5, is there any explanation
>> that
>>
>>
>> @Override
>> @BeforeEach
>> public void setUp()
>> throws Exception
>> {
>> super.setUp();
>>
>>
>> will not be called when running the test, but if I change it to
>>
>>
>> @BeforeEach
>> public void setUp2()
>> throws Exception
>> {
>> super.setUp();
>>
>>
>> It will be called?
>>
>> The super-class's method is
>>
>> @BeforeEach
>> public void setUp()
>> throws Exception
>> {
>> polygene = new Energy4Java();
>>
>>
>>
>>
>> And IF I change to setUp2(), then the setUp() in the super class IS
>> called directly by junit platform engine.
>>
>> Cheers
>> --
>> Niclas Hedhman, Software Developer
>> http://polygene.apache.org - New Energy for Java
>>
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://polygene.apache.org - New Energy for Java
>
--
Niclas Hedhman, Software Developer
http://polygene.apache.org - New Energy for Java
Re: JUnit 5 strange behavior
Posted by Niclas Hedhman <ni...@hedhman.org>.
For a while I thought the problem is that there is a hierarchy of abstract
tests, and that there is 2 levels of inheritance between the MongoDb test
and the AbstractPolygeneBaseTest, but IF I do the following test, it works
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class Tests
{
public static class BaseTestClass {
@BeforeEach
public void setUp(){
System.out.println("Base Test Class");
}
}
public static class InheritsFromBase extends BaseTestClass {
}
public static class InheritsFromBase2 extends InheritsFromBase {
}
public static class ActualTests extends InheritsFromBase2 {
@Override
@BeforeEach
public void setUp() {
System.out.println("I inherit from base");
super.setUp();
}
@Test
public void myTest(){
Assertions.assertTrue( true );
}
}
}
On Tue, Apr 17, 2018 at 10:09 AM, Niclas Hedhman <ni...@hedhman.org> wrote:
>
> Gang,
> if anyone has extensive experience with JUnit5, is there any explanation
> that
>
>
> @Override
> @BeforeEach
> public void setUp()
> throws Exception
> {
> super.setUp();
>
>
> will not be called when running the test, but if I change it to
>
>
> @BeforeEach
> public void setUp2()
> throws Exception
> {
> super.setUp();
>
>
> It will be called?
>
> The super-class's method is
>
> @BeforeEach
> public void setUp()
> throws Exception
> {
> polygene = new Energy4Java();
>
>
>
>
> And IF I change to setUp2(), then the setUp() in the super class IS called
> directly by junit platform engine.
>
> Cheers
> --
> Niclas Hedhman, Software Developer
> http://polygene.apache.org - New Energy for Java
>
--
Niclas Hedhman, Software Developer
http://polygene.apache.org - New Energy for Java