2012-05-02 6 views
0

내가 화씨섭씨에서 온도를 변환하고 그 반대의 작은 응용 프로그램을 가지고 있었다. 섭씨 또는 화씨와 버튼 하나와 EditText를 선택하기 위해 두 개의 RadioButton이 있습니다. 응용 프로그램을 테스트하기 위해 Junit을 만들었습니다. 는 <true>를 예상하지만,

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>
여기 내 테스트 코드입니다. 가치 라운딩에는 몇 가지 문제가 있다고 생각합니다. 정확하게 문제가 무엇인지 알려주세요.

+0

또한 "테스트를 성공적으로 수행했지만 실패했습니다"는 의미는 무엇입니까? 성공과 실패 모두 어떻게 될 수 있습니까? –

답변

0

예상 값은 아마도 102.0000001과 같을 것이며 솔로의 텍스트와 일치하지 않을 것입니다. 솔로의 텍스트는 102가되어야합니다 (코드를 올바르게 이해하면).

문자열을 비교하는 대신 표준 부동 소수점 비교 기술을 따라야합니다. , 당신의 테스트 케이스가 정확히 확인하려고 무엇 분명하지 않다

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

전체 :

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

그래서 당신은 같은 것을 사용하십시오. 그리고 귀하의 게시물 제목은 그 질문에 대해 아무 것도 나타내지 않습니다.

1

문자열 temp = expected + ""; 예상되는 것은 object (Float) type - Float가 예상됩니다. expected.toString()을 시도하거나 부동 소수점이 예상 한 float를 예상대로 변경하십시오. 그리고 디버그를 시도하십시오.