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

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

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

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

Q&A

解決済

1回答

220閲覧

リファクタ,テストコードの作成,バグ修正の方法を教えてください

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

1グッド

1クリップ

投稿2017/11/28 13:11

編集2017/11/28 13:39

【概要】
文字列型の2つ引数を、四則演算し結果を表示する四つメソッドのテストコードを作成し、
不具合を修正する。

【質問】
(1)プログラムコードをリファクタしてテストできるコードに修正したい。
(2)テストコードを作成したい。
(3)プログラムコードのバグを修正したい。

【成果物】
1)テストコードが知りたいです。
2)テストコードで検出した不具合リストを作成したいです。
3)修正した製品コード

【プログラムコードの仕様】
■共通仕様
入力値、計算結果はともに正の整数(0を含む)とする。
それ以外の場合は、結果として-1を表示する。
※引数、計算結果が計算不能、0未満、小数を含む場合は、-1を表示する。

public class keisan {

/**

  • @param args

*/

public static void main(String[] args) {
tasizan("3","3");
hikizan("3","3");
kakezan("3","3");
warizan("3","3");

}

private static int getIntVal(String val){
int res;
try {
res = Integer.parseInt(val);
} catch (NumberFormatException e) {
return 0;
}

if(res<0){
res = -1;
}

return res;
}

//足し算
public static void tasizan(String val1, String val2){
int i1,i2;
i1 = getIntVal(val1);
i2 = getIntVal(val2);

System.out.println("足し算の結果=" +(i1+i2));
}

//引き算
public static void hikizan(String val1, String val2){
int i1,i2;
i1 = getIntVal(val1);
i2 = getIntVal(val2);

System.out.println("引き算の結果=" +(i1-i2));
}

//掛け算
public static void kakezan(String val1, String val2){
int i1,i2,res;
i1 = getIntVal(val1);
i2 = getIntVal(val2);
res =0;
for(int i= 0; i<i2; i++){
res = res + i1;
}
System.out.println("掛け算の結果=" +res);
}

//割り算
public static void warizan(String val1, String val2){
int i1,i2, res;
i1 = getIntVal(val1);
i2 = getIntVal(val2);
try{
res = i1/i2;
}catch(ArithmeticException e){
res= 0;
}

System.out.println("割算の結果=" +res);
}

}

A-pZ👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/11/28 13:59

修正しました
guest

回答1

0

ベストアンサー

(1)プログラムコードをリファクタしてテストできるコードに修正したい。

無理です。
リファクタリングとは、

プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである

提示されたプログラムでの一番の問題は、戻り値がない(void)ことです。
Junitなどを使う場合、期待値と実測値の比較でテスト合否を判定するため、
現状のコードではテストフレームワークを採用することはできません。
追記:標準出力のテスト方法あったのでテスト可能でした。知識不足ですね・・・
とはいえ、テストすること自体は可能です。(お望みの回答にはなっていないと思いますが)

(2)テストコードを作成したい。

main メソッドの中で書かれているのでは?

何をテストしたいかは、回答者にはわかりません。
テストコードの前にテスト仕様書を作成してみてください。
※テスト仕様書については、ググるか身近な人に聞いてみるとよいフォーマットが手に入るかと

今の例だと

実行方法:tasizan("3","3") を呼び出す。
期待される結果:"足し算の結果=6"と表示されること。
実際の結果:ご自分で試してください
判定:ご自分で試してください

みたいな感じでしょうか。

(3)プログラムコードのバグを修正したい。

はい。がんばって修正してください。きっとできます!!
テスト結果でNGがでたものにたいして、期待される結果になるように修正すればよいです。

追記:
標準出力のテスト方法について、teratail内にありました。
https://teratail.com/questions/3694

投稿2017/11/29 03:47

編集2017/11/29 09:30
momon-ga

総合スコア4820

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

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

退会済みユーザー

退会済みユーザー

2017/11/29 09:04

ありがとうございます。 voidの部分を修正することで、テストできるコードに修正できますか?
momon-ga

2017/11/29 09:41 編集

テストできるかどうかは、質問者さん次第なので・・・きっとできます。としか答えられないです。 あと、標準出力の確認方法ありましたので、voidのままでもjunitでのテスト可能です。
退会済みユーザー

退会済みユーザー

2017/11/29 10:54 編集

テストできるコードに修正とあったので、どこかを修正すべきなんですが、むずかしいです。。。
退会済みユーザー

退会済みユーザー

2017/11/29 14:10

足し算の部分のみですが public static void tasizan(String val1, String val2){ ↓ public int tasizan(String val1, String val2){ にして public void doTesttasizan2(){ assertThat(keisan.tasizan("2", "3"),is(5)); } を行えるようにしてみました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問