Page List

Search on the blog

2013年6月20日木曜日

JUnitを使って単体テストをする(1)

 適当にテストして遊んでみた。

まず、適当なクラスを作ります。コイツをテスト対象として使います。
package com.kenjih.main;

public class DumbCalculator {
 public int multiply(int x, int y) {
  int ret = 0;
  for (int i = 0; i < y; i++)
   ret += x;
  return ret;
 }
 
 public int pow(int x, int y) {
  int ret = 1;
  for (int i = 0; i < y; i++)
   ret *= x;
  return ret;
 }
 
 public int divide(int x, int y) {
  return x / y;
 }
}
テストクラスは以下のとおり。
package com.kenjih.test;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.kenjih.main.DumbCalculator;

public class TestDumbCalculator {
 
 DumbCalculator calculator;
 
 @Before
 // テスト実行前に呼ばれる
 public void setUp() throws Exception {
  calculator = new DumbCalculator();
 }

 @After
 // テスト完了後に呼ばれる
 public void tearDown() throws Exception {
 }

 @Test
 public void testMultiply() {
  assertEquals(1000, calculator.multiply(10, 100));
 }

 @Test
 public void testPow_1() {
  assertEquals(10000000000L, calculator.pow(10, 10));
 }

 @Test(timeout = 10)
 // 10ミリ秒以内に処理が完了するか?
 public void testPow_2() {
  calculator.pow(10, 10000000);
 }
 
 @Test (expected = ArithmeticException.class)
 // ArithmeticExceptionをスローするか?
 public void testDivide() {
  calculator.divide(10, 0);
 }
}

Eclipseでテスト実行した結果。


JUnit便利ですねー。
次回はdjUnitを使って、virtual mock objectとかcoverage reportとかやってみようかと思います。

0 件のコメント:

コメントを投稿