JUnit

Spring에서 Unit test기능을 지원하는 Java Library이다.

Functions

메소드에 @Test annotation을 달아주면 이것이 Unit Test를 위한 method라는 것을 명시한다.

	@Test
	public void test() {
		boolean condn = false;
		// 1번째 param : 원하는 값, 2번째 param : 넣는 값, 두 값이 같다면 ok! 아니면 faliure를 반환한다.
		assertEquals(true, condn);
		//assertTrue는 위의 기능과 같다. assertFalse도 있다.
		assertTrue(condn);
		// assertFalse(condn);
		//assertNull, assertNotNull, assertArrayEquals는 특정 array와 원하는 array를 넣어서 안의 값들을 모두 비교한다.
		System.out.println("done!");
	}

Annotations

만약 여러 @Test가 있다면 @Test간의 실행순서를 보장해주진 않는다.(무작위로 실행된다)

public class MyMathTest {
	MyMath myMath = new MyMath();
	
	//Junit은 @Test 메소드들의 실행순서를 보장해주진 않는다!

	//@Before는 각각의 @Test전에 실행된다.
	@Before
	public void before() {
		System.out.println("Before");
	}
	
	//@After 각각의 @Test후에 실행된다.
	@After
	public void after() {
		System.out.println("After");
	}

	//@BeforeClass @AfterClass 는 현재의 class가 시작, 끝나고 실행되기 때문에 반드시 static으로 선언해줘야한다.
	@BeforeClass
	public static void beforeClass() {
		System.out.println("Before Class");
	}

	@AfterClass
	public static void afterClass() {
		System.out.println("After Class");
	}

	// MyMath.sum
	// 1,2,3 => 6
	@Test
	public void sum_with3numbers() {
		System.out.println("Test1");
		assertEquals(6, myMath.sum(new int[] { 1, 2, 3 }));
	}

	@Test
	public void sum_with1number() {
		System.out.println("Test2");
		assertEquals(3, myMath.sum(new int[] { 3 }));
	}
}