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

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

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

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

Java

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

Q&A

解決済

3回答

2087閲覧

junitテストコード書き方

kanekoK

総合スコア11

JUnit

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

Java

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

0グッド

1クリップ

投稿2020/10/19 05:22

編集2020/10/19 05:47

java

1 public String Test01(String in){ 2 if(in == null || in.length() != 13){ 3 return null; 4 String phoneNumber = res(in); 5 if(phoneNumber .length() != 15){ 6 return null; 7 } 8 } 9} 10 11 12//引数桁テスト 13Test public void 01(){ 14assertNull("12345", target.test001(null)); 15assertNotNull(target.test001("123456789012345")); 16}

junitテストコードを書くとき、Test01メソッドの引数に
ついてのテストコードは作成できますが、Test01の中のif(phoneNumber .length() != 15)
に対してはテストコードを書いて実行することはできないでしょうか?

テストコードで引数を15にしてしまうと if(in == null || in.length() != 13)でreturn null;
でそれ以上進めない。

junitというのは Test01メソッドでいうとpublic String Test01(String in){}の最初の引数inに対してのみの試験となりますか?

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

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

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

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

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

m.ts10806

2020/10/19 05:29

そもそもどういうテストケースを作ったのでしょうか? 機能仕様次第なのでどういう試験が必要かは設計次第ということになります。 この内容だけでは他者には何とも言えません。 設計者に聞くべきところもあります。コードだけでは話ができません。
kanekoK

2020/10/19 05:48

if(phoneNumber .length() != 15)に対してテストコードの作成をしたいです。
m.ts10806

2020/10/19 05:53

設計した人に聞いてください。 そもそもTest01()というメソッドもコンパイルエラーがでる内容ですし(returnの後に同じスコープ内にコードがある)、やはりコードだけでは話ができません。
kanekoK

2020/10/19 05:53

テスト設計書には引数15に対しての試験項目が存在します。ですが、その場合junitでどのように実行できるかがわかりません。記載したテストコードではjava.lang.AssertErrorが出てしまいます。
m.ts10806

2020/10/19 06:17 編集

>テスト設計書には引数15に対しての試験項目が存在します。 テスト設計書があるのなら余計に設計者に聞くべき内容です。 何の事情も知らない赤の他人にはどうにもできません。 それにテストしたい機能自体もご自身が組まれたものではないように見受けられます。 他者がどうもできない条件が揃いすぎてます。
momon-ga

2020/10/20 01:43 編集

> 記載したテストコードではjava.lang.AssertErrorが出てしまいます。 それはテストが失敗している=実装が正しくない ということです。 そもそもですが、target.test001("123456789012345") は、NotNullになることを確認したいのですか? どのような値になることを想定していますか?
kanekoK

2020/10/20 11:14

数字以外が含まれているかいないかの確認をしたいです。
guest

回答3

0

Java

1public String Test01(String in){ 2 if(in == null || in.length() != 13) 3 return null; 4 5 String phoneNumber = res(in); 6 if(phoneNumber.length() != 15) 7 return null; 8 9 // phoneNumber.length() == 15 のときの処理はここから 10}

if(in == null || in.length() != 13){ このブロックの中に書いてしまっているせいではないですか?
今のソースだとinがnullもしくはin.length()が13以外だとnullを返して、13だったとしても何もしていないんじゃないですか?

投稿2020/10/20 04:13

k_n_h_r

総合スコア58

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

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

kanekoK

2020/10/20 11:16

Junitがエラーが出てしまって。。すいません、確かに記載したコードも間違っておりました。しゅうせいしましたが、以前エラーのままです。。
guest

0

ベストアンサー

JUnitは、テストしたいメソッドに値を渡したときの戻り値が想定通りかどうか、のテストをするためのツールです。

テスト設計書とは別に、設計書がありませんか?
もし設計書があれば、具体的な処理ロジックが書いてあるはずなので、その内容をテストできるテストコードを書いてください。

実装コードでres()メソッドを呼び出しているかどうか、は考慮しません。
想定通りの結果にならないときに何でだろうかと処理ロジックを確認する過程でres()メソッドの中を見る、ということはあります。

とはいえ、稀に絶対phoneNumberの値が15桁以外にならないはずなのに15桁以外ならエラー、というロジックがあって、それはJUnitではテストが出来ない、ということもありますが…。
その時はテスト仕様書を書いた人と話し合ってください。

投稿2020/10/19 06:34

deaf_tadashi

総合スコア200

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

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

kanekoK

2020/10/19 12:46

ここ設計書がなにもないんです。。いきなりコードです。。
deaf_tadashi

2020/10/19 22:54

それは厳しい… JUnitでテスト必須、ということならパラメータが13桁以外はエラーになる確認と、res()の戻り値が正しいパターンの2件だけ書いてとりあえず終わりにするしかないかと。 res()メソッドの中身を読んで15桁以外が返ってくるパターンが把握できるなら、そのパターンも書く、くらいしかアドバイスが出来ないです。
kanekoK

2020/10/20 11:17

どうしたらいいか、まず設計を詳しく聞いてみます!
guest

0

java

1 public String Test01(String in) { 2 if (in == null || in.length() != 13) { 3 return null; 4 String phoneNumber = res(in); 5 if (phoneNumber.length() != 15) { 6 return null; 7 } 8 } 9 }

ですので、まずは in に入る文字列は13文字である必要があるようです。
res() メソッドに特定の13文字をいれた結果(これに関しては私たちではわかりません)、phomeNumberの結果を判定してください。

投稿2020/10/19 06:16

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問