0

我有一个小型应用程序,可以将温度从摄氏温度转换为华氏温度,反之亦然。我有两个 RadioButtons 来选择温度,即摄氏度或华氏度,一个 Button 和一个 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

你有 String temp=expected+""; 但预期是 object(Float) 类型 - 预期为 Float。所以尝试expected.toString() 或改变Float expected 为float expected。并尝试调试。

于 2012-05-02T12:15:29.623 回答
0

预期的值可能类似于 102.0000001,它不会匹配单独的文本,它应该是 102(如果我正确理解代码)。

您应该遵循标准浮点比较技术,而不是比较字符串。

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 回答