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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

3812閲覧

JUnit単体テストで4つある内の最初の1つ目しかエラーメッセージを表示出来ない@初学者

ayumu1220

総合スコア5

JUnit

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2020/12/09 14:03

前提・実現したいこと

単純な4測計算(+.-.*./)をしてアドレスを入力すれば答えを表示するWEBアプリ(Calc4とします)を作りました。
Calc4にJunitで単体テストを実行してエラーメッセージを表示したいのですがはじめのassertEqualsメソッドの引き算に失敗しましたというエラーメッセージしか表示できません。

足し算、引き算、掛け算、割り算、この四つのエラーメッセージをJunitテストで表示させたいです。
よろしくお願いします!

###https://blog.toyo999.com/entry/java-junit-auto-test#Caliculatorjava
↑のURLを参考にアレンジして作っています

発生している問題・エラーメッセージ

コンソールでエラーメッセージを表示

Exception in thread "main" org.opentest4j.AssertionFailedError: 引き算に失敗しました ==> expected: <5> but was: <95> at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55) at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62) at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150) at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:542) at calc4junitTest.Calc4.testCalc4(Calc4.java:60) at calc4junitTest.Calc4Test.main(Calc4Test.java:25)

Calc4.java↓

Calc4java

1package calc4junitTest; 2 3import static org.junit.jupiter.api.Assertions.assertEquals; 4 5class Calc4 { 6 /** 7 * 足し算の結果を返す 8 * @param x 9 * @param y 10 */ 11 public int tasizan(int x,int y){ return x + y; } 12 13 /** 14 * 引き算の結果を返す 15 * @param x 16 * @param y 17 */ 18 public int hikizan(int x,int y){ return x - y; } 19 20 /** 21 * 掛け算の結果を返す 22 * @param x 23 * @param y 24 */ 25 public int kakezan(int x,int y){ return x * y; } 26 27 /** 28 * 掛け算の結果を返す 29 * @param x 30 * @param y 31 */ 32 public int warizan(int x,int y){ return x / y; } 33 34 35 36 public static void main(String[] args){ 37 int x = 10; 38 int y = 5; 39 40 // 自分自身をインスタンス化 41 Calc4 cal = new Calc4(); 42 43 // 足し算の結果を出力 → 15 44 System.out.println("x + y = : " + cal.tasizan(x, y)); 45 46 // 引き算の結果を出力 → 5 47 System.out.println("x - y = : " + cal.hikizan(x, y)); 48 49 // 足し算の結果を出力 → 50 50 System.out.println("x * y = : " + cal.kakezan(x, y)); 51 52 // 引き算の結果を出力 → 2 53 System.out.println("x / y = : " + cal.warizan(x, y)); 54 55 } 56 // Calc4Testで怒られたクラス、assertEqualsクラス 57 public void testCalc4() { 58 Calc4 calc = new Calc4(); 59 // 引き算の結果を確認、左が期待値、右が実際の結果 60 assertEquals(5, calc.hikizan(100,5),"引き算に失敗しました"); 61 62 // 足し算の結果を確認、左が期待値、右が実際の結果 63 assertEquals(15, calc.tasizan(100,5),"足し算に失敗しました"); 64 65 // 掛け算の結果を確認、左が期待値、右が実際の結果 66 assertEquals(50, calc.kakezan(100,5),"掛け算に失敗しました"); 67 68 // 割り算の結果を確認、左が期待値、右が実際の結果 69 assertEquals(2, calc.warizan(100,5),"割り算に失敗しました"); 70 } 71 72}

Calc4Test.java↓

Calc4Testjava

1package calc4junitTest; 2 3import static org.junit.jupiter.api.Assertions.assertEquals; 4 5class Calc4Test { 6 7 // Caliculator をインスタンス化 8 Calc4 calc = new Calc4(); 9 10 /** 11 * 実際にテストを行うメソッド 12 */ 13 public void testCalc4(){ 14 // 引き算の結果を確認、左が期待値、右が実際の結果 15 assertEquals(5, calc.hikizan(100,5),"引き算に失敗しました"); 16 17 // 足し算の結果を確認、左が期待値、右が実際の結果 18 assertEquals(15, calc.tasizan(100,5),"足し算に失敗しました"); 19 20 // 掛け算の結果を確認、左が期待値、右が実際の結果 21 assertEquals(50, calc.kakezan(100,5),"掛け算に失敗しました"); 22 23 // 割り算の結果を確認、左が期待値、右が実際の結果 24 assertEquals(2, calc.warizan(100,5),"割り算に失敗しました"); 25 } 26 27 public static void main(String[] args){ 28 // 自分自身をインスタンス化 29 Calc4 ct = new Calc4(); 30 // 怒っているメソッド 31 ct.testCalc4(); 32 } 33}

試したこと

すぐ上にtestCalc4メソッドがあるのに
ct.testCalc4がCalc4クラスにないと怒られたのでテストメソッドをそのままCalc4クラスにコピペしました。
イメージ説明

エラーメッセージは順番が一番上の物が表示されることを確認。
一番上のエラーメッセージであれば変更可能➡例:引き算に失敗した➡引き算に失敗した失敗した失敗した失敗した失敗した
という風に変更可能です

Calc4Test内のassertEqualsメソッドやインスタンス化コードはコメントアウトしても挙動が同じでした

Calc4.java自体はちゃんと動きました
イメージ説明

補足情報(FW/ツールのバージョンなど)

Windows10
STS4
JUNIT5

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

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

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

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

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

guest

回答1

0

ベストアンサー

アサーションは失敗となった時点でそのテストケースが終了となり後続のアサーションは評価されません。
複数のアサーションを実行したい場合、テストケースを分ける必要があります。

投稿2020/12/09 15:39

rysh

総合スコア874

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問