
Itemizing 5. Logging the invocations of JUnit 5 lifecycle strategies (LifecycleDemoTest.java)
package deal com.javaworld.geekcap.lifecycle;
import org.junit.jupiter.api.*;
public class LifecycleDemoTest {
@BeforeAll
static void beforeAll() {
System.out.println("Connect with the database");
}
@BeforeEach
void beforeEach() {
System.out.println("Load the schema");
}
@AfterEach
void afterEach() {
System.out.println("Drop the schema");
}
@AfterAll
static void afterAll() {
System.out.println("Disconnect from the database");
}
@Take a look at
void testOne() {
System.out.println("Take a look at One");
}
@Take a look at
void testTwo() {
System.out.println("Take a look at Two");
}
}
The output from operating this take a look at prints the next:
Connect with the database
Load the schema
Take a look at One
Drop the schema
Load the schema
Take a look at Two
Drop the schema
Disconnect from the database
As you possibly can see from this output, the beforeAll
technique known as first and should do one thing like hook up with a database or create a big knowledge construction into reminiscence. Subsequent, the beforeEach
technique prepares the information for every take a look at; for instance, by populating a take a look at database with an anticipated set of information. The primary take a look at then runs, adopted by the afterEach
technique. This course of (beforeEach
—> take a look at—>afterEach
) continues till all of the assessments have accomplished. Lastly, the afterAll
technique cleans up the take a look at atmosphere, probably by disconnecting from a database.
Earlier than wrapping up this preliminary introduction to testing with JUnit 5, I’ll present you easy methods to use tags to selectively run totally different sorts of take a look at instances. Tags are used to establish and filter particular assessments that you simply wish to run in varied eventualities. For instance, you would possibly tag one take a look at class or technique as an integration take a look at and one other as improvement code. The names and makes use of of the tags are all as much as you.
We’ll create three new take a look at courses and tag two of them as improvement and one as integration, presumably to distinguish between assessments you wish to run when constructing for various environments. Listings 6, 7, and eight present these three easy assessments.
Itemizing 6. JUnit 5 tags, take a look at 1 (TestOne.java)
package deal com.javaworld.geekcap.tags;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Take a look at;
@Tag("Growth")
class TestOne {
@Take a look at
void testOne() {
System.out.println("Take a look at 1");
}
}
Itemizing 7. JUnit 5 tags, take a look at 2 (TestTwo.java)
package deal com.javaworld.geekcap.tags;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Take a look at;
@Tag("Growth")
class TestTwo {
@Take a look at
void testTwo() {
System.out.println("Take a look at 2");
}
}
Itemizing 8. JUnit 5 tags, take a look at 3 (TestThree.java)
package deal com.javaworld.geekcap.tags;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Take a look at;
@Tag("Integration")
class TestThree {
@Take a look at
void testThree() {
System.out.println("Take a look at 3");
}
}
Tags are carried out by means of annotations, and you may annotate both a whole take a look at class or particular person strategies in a take a look at class; moreover, a category or a technique can have a number of tags. On this instance, TestOne and TestTwo are annotated with the “Growth”
tag, and TestThree is annotated with the “Integration”
tag. We are able to filter take a look at runs in several methods based mostly on tags. The only of those is to specify a take a look at in your Maven command line; for instance, the next solely executes assessments tagged as “Growth”
:
mvn clear take a look at -Dgroups="Growth"
The teams
property permits you to specify a comma-separated record of tag names for the assessments that you really want JUnit 5 to run. Executing this yields the next output:
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Working com.javaworld.geekcap.tags.TestOne
Take a look at 1
[INFO] Exams run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 s - in com.javaworld.geekcap.tags.TestOne
[INFO] Working com.javaworld.geekcap.tags.TestTwo
Take a look at 2
[INFO] Exams run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in com.javaworld.geekcap.tags.TestTwo
Likewise, we might execute simply the mixing assessments as follows:
mvn clear take a look at -Dgroups="Integration"
Or, we might execute each improvement and integration assessments:
mvn clear take a look at -Dgroups="Growth, Integration"
Along with the teams
property, JUnit 5 permits you to use an excludedGroups
property to execute all assessments that would not have the required tag. For instance, in a improvement atmosphere, we don’t wish to execute the mixing assessments, so we might execute the next:
mvn clear take a look at -DexcludedGroups="Integration"
That is useful as a result of a big software can have actually hundreds of assessments. When you wished to create this environmental differentiation and add some new manufacturing assessments, you wouldn’t wish to have to return and add a “Growth”
tag to the opposite 10,000 assessments.
Lastly, you possibly can add these identical teams
and excludedGroups
fields to the surefire
plugin in your Maven POM file. It’s also possible to management these fields utilizing Maven profiles. I encourage you to evaluate the JUnit 5 user guide to study extra about tags.
Conclusion
This text launched among the highlights of working with JUnit 5. I confirmed you easy methods to configure a Maven undertaking to make use of JUnit 5 and easy methods to write assessments utilizing the @Take a look at
and @ParameterizedTest
annotations. I then launched the JUnit 5 lifecycle annotations, adopted by a take a look at the use and advantages of filter tags.