質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Q&A

解決済

2回答

26216閲覧

[Java]Junitを用いた例外処理のテスト

退会済みユーザー

退会済みユーザー

総合スコア0

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

0グッド

0クリップ

投稿2019/08/20 11:57

編集2019/08/20 12:00

実装 

Junitを用いて例外処理の単体テストを実装したいです。
Junit側でどうテストを行えばわからない状態です。
ご教示お願い致します。

Junit4で実装
#コード

Junit

1 @Test 2 public void test01() { 3 try { 4 human.user(""); 5 } catch (zisakuException e) { 6 //どう実装すればテストできるか 7 } 8 9 } 10

user

1public static String user(String input) throws zisakuException { 2 3 if(input.equals(""){ 4 throw new zisakuException(Errorteisuu.INPUT_EXCEPTION); 5 } 6 7}

enum

1@AllArgsConstructor 2@Getter 3public enum Errorteisuu { 4 5 INPUT_EXCEPTION(1); 6 7private final int code; 8 9

Exception

1@AllArgsConstructor 2@Getter 3public class zisakuException extends RuntimeException { 4 5 private final Errorteisuu errorCode;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azuapricot

2019/08/20 13:08

なにをどう例外処理したいのか仕様もないので回答しようがありません
退会済みユーザー

退会済みユーザー

2019/08/20 13:28

失礼いたしました。 例外処理をしたい内容としては、userメソッドに引数として""空文字をとり ""空文字をとった場合に、zisakuExceptionを投げる まではわかるのですが、jUnitでテストする際に例外を投げているかをどこで判断すればいいのかがわからない状態です。
guest

回答2

0

ベストアンサー

「意図した例外が発生しているか?」をテストしたいということでしょうか?
それでしたら、

java

1 2 @Test(expected = zisakuException.class) 3 public void test01() { 4 human.user(""); 5 } 6

でどうでしょうか。
もしくは、

java

1 2 @Test 3 public void test01() { 4 try { 5 human.user(""); 6 //例外発生を意図しているため、発生しない場合はテスト失敗とする。 7 fail("正常終了しました。"); 8 } catch (Exception e) { 9 assertThat(e, is(instanceOf(zisakuException.class))) 10 assertThat(e.getMessage(), is("予期されるメッセージ")) 11 } 12 13 } 14

このあたりも参考になるかもしれません。
【JUnit】throw される例外をテストする

投稿2019/08/20 14:00

編集2019/08/21 12:15
sho03

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momon-ga

2019/08/21 02:22

try-catchを使うなら、human.user("");の直下にfailを書いておくと良いかと
sho03

2019/08/21 12:16

そうですね。ありがとうございます。 回答に追記しました。
退会済みユーザー

退会済みユーザー

2019/08/21 13:47

回答ありがとうございます。 返信遅くなり申し訳ございません。 fail()を記述することで、Junitで例外処理のテストの実装を行うことができました。
guest

0

例外を投げているかをどこで判断すればいいのかがわからない状態です。

→以下の通りに判断してみてはどうでしょうか?

JUnit

1@Test 2public void test01() { 3 try { 4 human.user(""); 5 // ここにきたら例外が発生していないのでテストとしてはエラーにする 6 } catch (zisakuException e) { 7 // ここにきたら例外が発生している 8 // eに設定されているerrorCodeがErrorteisuu.INPUT_EXCEPTIONと同じことをチェックする 9 } 10 11}

投稿2019/08/20 13:57

terotero

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/21 13:48

回答いただきありがとうございました。 返信遅くなり申し訳ございません。 コードは参考にさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問