Before
A
@Before method is executed for each test.
T
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() {
squares = new Squares();
squares.add(3);
squares.add(5);
System.out.println("Squares initialized!");
}
@Test public void average() {
assertEquals(squares.average(), 17);
}
@Test public void sum() {
assertEquals(squares.sum(), 34);
}
}
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
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() {
squares = new SQ();
squares.add(3);
squares.add(5);
System.out.println("Squares initialized!");
}
@Test public void average() {
assertEquals(squares.average(), 17);
}
@Test public void sum() {
assertEquals(squares.sum(), 34);
}
}
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
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");
}
}
class App {}