minte9
LearnRemember



Before

A @Before method is executed for each test.
T 
/** 
 * Before method - exectuted before each test.
 * 
 * JUnit creates a new instance for each test it runs.
 */

package com.minte9.junit.annotations;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;

public class BeforeApp {
    private Squares squares;

    @Before public void executedBeforeEach() { // Look Here
        
        squares = new Squares();
        squares.add(3); // 9
        squares.add(5); // 25

        System.out.println("Squares initialized!"); // executed twice
            // Squares initialized!
            // Squares initialized!
    }
    
    @Test public void average() {
        assertEquals(squares.average(), 17); // passed
    }

    @Test public void sum() {
        assertEquals(squares.sum(), 34); // passed
    }
}

class Squares {

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

    public void add(int x) {
        squares.add(x * x); 
    }

    public int average() { 
        return sum() / squares.size(); 
    }

    public int sum() { 
        return squares.stream().mapToInt(Integer::intValue).sum();
    }
}

Before Class

Static method @BeforeClass is executed once before all tests.
T 
/**
 * BeforeClass method - executed once before all tests.
 * 
 * JUnit creates a new instance for each test it runs.
 */

package com.minte9.junit.annotations;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;

public class BeforeClassApp {
    private static SQ squares;

    @BeforeClass static public void executedBeforeOnce() { // Look Here
        
        squares = new SQ();
        squares.add(3); // 9
        squares.add(5); // 25

        System.out.println("Squares initialized!"); // executed once
            // Squares initialized!
    }
    
    @Test public void average() {
        assertEquals(squares.average(), 17); // passed
    }

    @Test public void sum() {
        assertEquals(squares.sum(), 34); // passed
    }
}

class SQ {

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

    public void add(int x) {
        squares.add(x * x); 
    }

    public int average() { 
        return sum() / squares.size(); 
    }

    public int sum() { 
        return squares.stream().mapToInt(Integer::intValue).sum();
    }
}

After

An @After method runs after every test method.
T 
/** 
 * After method - exectuted after each test.
 * 
 * JUnit creates a new instance for each test it runs.
 */

package com.minte9.junit.annotations;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class AfterApp {
    
    @Before public void start() {
        System.out.println("Db connection start");
    }

    @Test public void run() {
        System.out.println("App run test");
    }

    @After public void end() {
        System.out.println("Db connection close");
    }

    /*
        Db connection start
        App run test
        Db connection close
    */
}

class App {}



  Last update: 328 days ago