Skip to Main Content
Kotlin Cookbook
book

Kotlin Cookbook

by Ken Kousen
November 2019
Intermediate to advanced content levelIntermediate to advanced
254 pages
4h 55m
English
O'Reilly Media, Inc.
Content preview from Kotlin Cookbook

Chapter 9. Testing

9.1 Setting the Test Class Life Cycle

Problem

You want to instantiate a JUnit 5 test only once per class instance, rather than the default once per test function.

Solution

Use the @TestInstance annotation, or set the life cycle default property in the junit-platform.properties file.

Discussion

Note

This recipe, as with many of the recipes in this chapter, is based on a blog post and presentation entitled, “Best Practices for Unit Testing in Kotlin,” by Philipp Hauer.

JUnit 4 by default creates a new instance of the test class for each test method. This ensures that the attributes of the test class are reinitialized each time, which makes the tests themselves independent. The downside is that the initialization code is executed again and again for each test.

To avoid that in Java, any properties of the class can be marked static, and any initialization code can be put in a static method that is annotated with @BeforeClass, which will be executed only once.

As an example, consider the following JUnit 4 test for java.util.List, shown in Example 9-1.

Example 9-1. JUnit 4 test for a list
public class JUnit4ListTests {
    private static List<String> strings =                  1
            Arrays.asList("this", "is", "a", "list", "of", "strings");

    private List<Integer> modifiable = new ArrayList<>();  

    @BeforeClass                                           
    public static void runBefore() {
        System.out.println("BeforeClass: " ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Functional Kotlin

Functional Kotlin

Mario Arias, Rivu Chakraborty
Kotlin Programming Cookbook

Kotlin Programming Cookbook

Aanand Shekhar Roy, Rashi Karanpuria
Functional Programming in Kotlin

Functional Programming in Kotlin

Runar Bjarnason, Paul Chiusano, Marco Vermeulen
Learning Concurrency in Kotlin

Learning Concurrency in Kotlin

Miguel Angel Castiblanco Torres

Publisher Resources

ISBN: 9781492046660Errata PageSupplemental Content