BAEL-902: Migrating from JUnit 4 to JUnit5 (#2202)

This commit is contained in:
Jose Carvajal 2017-07-04 14:34:09 +02:00 committed by adamd1985
parent 172c6c95b0
commit 76e2c35457
11 changed files with 250 additions and 0 deletions

View File

@ -21,6 +21,8 @@
<java.version>1.8</java.version>
<junit.jupiter.version>5.0.0-M4</junit.jupiter.version>
<junit.platform.version>1.0.0-M4</junit.platform.version>
<junit.vintage.version>4.12.0-M4</junit.vintage.version>
<junit4.version>4.12</junit4.version>
<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
@ -51,11 +53,40 @@
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit4.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<!-- <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit.vintage.version}</version>
<scope>test</scope>
</dependency> -->
</dependencies>
</project>

View File

@ -0,0 +1,23 @@
package com.baeldung.migration.junit4;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.baeldung.migration.junit4.categories.Annotations;
import com.baeldung.migration.junit4.categories.JUnit4Tests;
@Category(value = { Annotations.class, JUnit4Tests.class })
public class AnnotationTestExampleTest {
@Test(expected = Exception.class)
public void shouldRaiseAnException() throws Exception {
throw new Exception("This is my expected exception");
}
@Test(timeout = 1)
@Ignore
public void shouldFailBecauseTimeout() throws InterruptedException {
Thread.sleep(10);
}
}

View File

@ -0,0 +1,28 @@
package com.baeldung.migration.junit4;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
public class AssertionsExampleTest {
@Test
@Ignore
public void shouldFailBecauseTheNumbersAreNotEqualld() {
assertEquals("Numbers are not equal!", 2, 3);
}
@Test
public void shouldAssertAllTheGroup() {
List<Integer> list = Arrays.asList(1, 2, 3);
assertEquals("List is not incremental", list.get(0)
.intValue(), 1);
assertEquals("List is not incremental", list.get(1)
.intValue(), 2);
assertEquals("List is not incremental", list.get(2)
.intValue(), 3);
}
}

View File

@ -0,0 +1,18 @@
package com.baeldung.migration.junit4;
import org.junit.Rule;
import org.junit.Test;
import com.baeldung.migration.junit4.rules.TraceUnitTestRule;
public class RuleExampleTest {
@Rule
public final TraceUnitTestRule traceRuleTests = new TraceUnitTestRule();
@Test
public void whenTracingTests() {
System.out.println("This is my test");
/*...*/
}
}

View File

@ -0,0 +1,5 @@
package com.baeldung.migration.junit4.categories;
public interface Annotations {
}

View File

@ -0,0 +1,5 @@
package com.baeldung.migration.junit4.categories;
public interface JUnit4Tests {
}

View File

@ -0,0 +1,35 @@
package com.baeldung.migration.junit4.rules;
import java.util.ArrayList;
import java.util.List;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.MultipleFailureException;
import org.junit.runners.model.Statement;
public class TraceUnitTestRule implements TestRule {
@Override
public Statement apply(Statement base, Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
List<Throwable> errors = new ArrayList<Throwable>();
System.out.println("Starting test ... " + description.getMethodName());
try {
base.evaluate();
} catch (Throwable e) {
errors.add(e);
} finally {
System.out.println("... test finished. " + description.getMethodName());
}
MultipleFailureException.assertEmpty(errors);
}
};
}
}

View File

@ -0,0 +1,28 @@
package com.baeldung.migration.junit5;
import java.time.Duration;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
@Tag("annotations")
@Tag("junit5")
@RunWith(JUnitPlatform.class)
public class AnnotationTestExampleTest {
@Test
public void shouldRaiseAnException() throws Exception {
Assertions.assertThrows(Exception.class, () -> {
throw new Exception("This is my expected exception");
});
}
@Test
@Disabled
public void shouldFailBecauseTimeout() throws InterruptedException {
Assertions.assertTimeout(Duration.ofMillis(1), () -> Thread.sleep(10));
}
}

View File

@ -0,0 +1,39 @@
package com.baeldung.migration.junit5;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
@RunWith(JUnitPlatform.class)
public class AssertionsExampleTest {
@Test
@Disabled
public void shouldFailBecauseTheNumbersAreNotEqual() {
Assertions.assertEquals(2, 3, "Numbers are not equal!");
}
@Test
@Disabled
public void shouldFailBecauseItsNotTrue_overloading() {
Assertions.assertTrue(() -> {
return false;
}, () -> "It's not true!");
}
@Test
public void shouldAssertAllTheGroup() {
List<Integer> list = Arrays.asList(1, 2, 3);
Assertions.assertAll("List is not incremental", () -> Assertions.assertEquals(list.get(0)
.intValue(), 1),
() -> Assertions.assertEquals(list.get(1)
.intValue(), 2),
() -> Assertions.assertEquals(list.get(2)
.intValue(), 3));
}
}

View File

@ -0,0 +1,19 @@
package com.baeldung.migration.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import com.baeldung.migration.junit5.extensions.TraceUnitExtension;
@RunWith(JUnitPlatform.class)
@ExtendWith(TraceUnitExtension.class)
public class RuleExampleTest {
@Test
public void whenTracingTests() {
System.out.println("This is my test");
/*...*/
}
}

View File

@ -0,0 +1,19 @@
package com.baeldung.migration.junit5.extensions;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.TestExtensionContext;
public class TraceUnitExtension implements AfterEachCallback, BeforeEachCallback {
@Override
public void beforeEach(TestExtensionContext context) throws Exception {
System.out.println("Starting test ... " + context.getDisplayName());
}
@Override
public void afterEach(TestExtensionContext context) throws Exception {
System.out.println("... test finished. " + context.getDisplayName());
}
}