【Java】junitで@ruleを使ってException(例外)テストを実施する方法

java

Junitで例外処理をテストするためのとても便利な方法を紹介します。

@ruleを使い始めると、今までtry-catchでテストをしていた方はコード量の少なさに感激すると思います。(少しおおげさですが。。)

それではさっそく@ruleの使い方を紹介していきます。

[スポンサーリンク]

@ruleを使った例外のテスト

まずはテスト対象のクラスを用意します。
IllegalArgumentExceptionをスローするだけの単純なクラスを用意しました。
これはJunitクラスではありません。今回はこのクラスをテストしていく形で解説を進めていきます。

public class RuleSample {
	public void throwExcption() {
		throw new IllegalArgumentException("this is test!!");
	}
}

こちらがJunitクラスになります。
@ruleを使った例外テストを実施しています。
3行目、4行目で@ruleを使ったクラスを作成しています。
9行目、10行目で例外の期待値をセットしています。

public class RuleSampleTest {

	@Rule
	public ExpectedException exception = ExpectedException.none();

	@Test
	public void test () {
		RuleSample sanple = new RuleSample();
		exception.expect(IllegalArgumentException.class);
		exception.expectMessage("this is test!!");
		sanple.throwExcption();
	}
}

Try-catchを使った例外のテスト

@ruleを使わなかった場合のソースコードも紹介します。
Try-catchを使って例外のテストをするので、どうしても見た目が複雑になってしまいます。

public class RuleSampleTest {
	@Test
	public void test () {
		RuleSample sanple = new RuleSample();
		try {
			sanple.throwExcption();
		} catch (IllegalArgumentException ex) {
			assertEquals("this is test!!", ex.getMessage());
		}

	}
}

さいごに

@ruleTry-catchのソースコードを比較してもわかるように、@ruleの方がソースコードが全体的にスッキリとします。

Try-catchに強いこだわりがなければ、@ruleの利用をオススメします!
それでは!