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

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

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

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

Java

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

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

解決済

1回答

1971閲覧

テストプログラムの作成について

icecleam

総合スコア46

JUnit

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

Java

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

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2020/08/10 08:04

以下のMoney.javaの★★部分のテストプログラムをMoneyTestクラスのtestIsEqualsメソッドに追加したいのですが、うまくできません。。


if (obj == null) {
return false;
}


objがnullならfalseを返す部分なので、引数がnullのisEqualsメソッドを実行させ、falseが返ってくることを確認できればいいのですが、どのように記載すれば良いでしょうか。

MoneyTest.java

java

1package practice; 2 3import static org.junit.Assert.*; 4 5import org.junit.Test; 6 7public class MoneyTest { 8 9 @Test(expected = IllegalArgumentException.class) 10 public void testMoney() { 11 12 int amount1 = 1; 13 int amount2 = 0; 14 int amount3 = -1; 15 16 Money result1 = new Money(amount1); 17 assertEquals(amount1, result1.amount); 18 19 Money result2 = new Money(amount2); 20 assertEquals(amount2, result2.amount); 21 new Money(amount3); 22 } 23 24 @Test(expected = NullPointerException.class) 25 public void testAdd() { 26 27 Money self1 = new Money(1); 28 Money m1 = new Money(2); 29 30 Money self2 = new Money(1); 31 Money m2 = null; 32 33 Money result1 = self1.add(m1); 34 assertEquals(3, result1.amount); 35 36 self2.add(m2); 37 } 38 39 @Test 40 public void testIsEquals() { 41 42 Money self1 = new Money(1); 43 Money obj1 = new Money(1); 44 45 Money self2 = new Money(1); 46 Money obj2 = new Money(2); 47 48 Money self4 = new Money(1); 49 String obj4 = "unit08"; 50 51 boolean result1 = self1.isEquals(obj1); 52 assertTrue(result1); 53 54 boolean result2 = self2.isEquals(obj2); 55 assertFalse(result2); 56 57 boolean result4 = self4.isEquals(obj4); 58 assertFalse(result4); 59 } 60 61}

Money.java

java

1package practice; 2 3/** 4 * 金額を表すクラス 5 */ 6public class Money { 7 8 /** 金額 */ 9 int amount; 10 11 /** 12 * コンストラクター 13 * 14 * @param amount 金額 15 * @throw IllegalArgumentException 16 * amountが負の場合にスローします。 17 */ 18 public Money(int amount) { 19 20 if (amount < 0) { 21 throw new IllegalArgumentException(); 22 } 23 24 this.amount = amount; 25 } 26 27 /** 28 * 金額を足し算します。 29 * 30 * @param m 金額 31 * @return 加算金額 32 */ 33 public Money add(Money m) { 34 return new Money(amount + m.amount); 35 } 36 37 /** 38 * 同値を検査します。 39 * amountの値が等しい時に限り、同値と判断します。 40 * 41 * @param obj 比較対象オブジェクト 42 * @return 等しければ真 43 */ 44 public boolean isEquals(Object obj) { 45 46//★★ 47 if (obj == null) { 48 return false; 49 } 50//★★ 51 52 53 if (!(obj instanceof Money)) { 54 return false; 55 } 56 57 Money m = (Money) obj; 58 return amount == m.amount; 59 } 60} 61

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

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

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

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

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

maisumakun

2020/08/10 08:13

テストとは別件の問題なのでこちらに書きますが、equalsではなくisEqualsという名前であることにどういった意味がありますでしょうか(Object標準のequalsをオーバーライドするほうが適切ではないかと考えます)。
icecleam

2020/08/10 08:20

ご質問ありがとうございます。 メソッド名がequalsではないことには、特に意味はなかったです。 でも確かにequalsの方がわかりやすいですね。 次回以降プログラムを書く際は命名する際には気をつけてみます。
guest

回答1

0

ベストアンサー

ん?

java

1 boolean result2 = self2.isEquals(obj2); 2 assertFalse(result2);

が、書けるならこれと同じですけど。

java

1 boolean result2 = self2.isEquals(null); 2 assertFalse(result2);

みたいな感じでいいと思います。

投稿2020/08/10 14:46

momon-ga

総合スコア4820

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問