0

温度を摂氏から華氏に、またはその逆に変換する小さなアプリケーションがあります。温度、つまり摂氏または華氏を選択するための 2 つの RadioButtons と、1 つの Button と 1 つの EditText があります。Junitアプリケーションをテストするために を作成しました。
ここに私のテストコードがあります:

float temparature=102;
Float expected=(float) 0;
solo.enterText(0,String.valueOf(temparature));
solo.clickOnButton("calculate");

         if(solo.isRadioButtonChecked(0)){
            expected=((temparature-32)*5/9);
            }
         else if(solo.isRadioButtonChecked(1)){
          expected=((temparature*9)/5)+32;
                }

         String temp=expected+"";

         assertEquals(true,solo.searchEditText(temp));  

}

上記のテストを実行すると、テストの実行は成功しましたが、次のように言って失敗しました: expected<true>but was <false>. 値の丸めに問題があると思います。正確に何が問題なのか教えてください。

4

2 に答える 2

1

文字列temp=expected + ""; しかし、期待されるのはobject(Float)タイプです-Floatが期待されます。したがって、expected.toString()を試すか、Float期待値をfloat期待値に変更してください。そして、デバッグしてみてください。

于 2012-05-02T12:15:29.623 に答える
0

expected の値はおそらく 102.0000001 のようなもので、ソロのテキストとは一致しません。これは 102 である必要があります (コードを正しく理解していれば)。

文字列を比較する代わりに、標準の float 比較手法に従う必要があります。

http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals%28java.lang.String,%20double,%20double,%20double%29

したがって、次のようなものを使用します。

assertEquals("The converted temperature didn't match.", temparature, expected, 0.001);

全体として、テスト ケースが正確に何を検証しようとしているのかが明確ではありません。また、投稿のタイトルは質問について何も示していません。

于 2012-05-04T10:47:38.273 に答える