2017-11-20 4 views
1

우리는 현재 프로그래밍 클래스에서 JUnit 테스트를 배우고 있습니다. 우리의 작업은 배열의 INT 값의 합계를 계산하는 방법을 쓰고 있었다 :간단한 JUnit 테스트가 작동하지 않습니다.

public class PIArrays 
{ 
    public int sum(final int[] array) { 
     int sum = 0; 
     for(int i = 0; i < array.length; i++){ 
      sum += array[i]; 
     } 
     return sum; 
    } 

} 

그럼 우리가하기 BlueJ의 도구의 도움으로 테스트를 작성하기로되어있다.

public void testSum() 
{ 
    PIArrays pIArrays1 = new PIArrays(); 
    assertEquals(3, pIArrays1.sum({1,2})); 
} 

합계 방법

작동이 오류 메시지에 잘하지만, 테스트 결과 :

"illegal start of expression" 
정확히 내가 잘못 뭐하는 거지

?

편집 :

공용 클래스 PIArraysTest는 실제로 공용 클래스 PIArrays 잘못이다. 잘못된 라인을 복사했습니다.

오류 내 테스트 클래스에서 발생합니다

assertEquals(3, pIArrays1.sum({1,2})); 

이 부분 :이 줄 공용 클래스 PIArraysTestint[]가 아니므로

({1,2}) 

+0

클래스 이름을 'PIArraysTest'로 지정했는데이를'PIArrays'라고 부릅니까? 그건 맞지 않아. 테스트 코드에서'PIArraysTest pIArrays1 = new PIArraysTest();'를 사용해보십시오. 또한 오류에 대해 자세히 설명하십시오. 어느 선이 어느 선 이냐? 유일한 정보 권리가 아닐까요? – Clemenz

+1

'pIArrays1.sum ({1,2})'->'pIArrays1.sum (새로운 int [] {1,2})' – UnholySheep

+0

질문을 편집 해 주셔서 감사합니다. 이것은 당신이 정확히 무엇을 요구하고 있는지 훨씬 더 분명하게 해줍니다. 다음 번에 다른 질문을하는 동안 이것을 명심하십시오! – Clemenz

답변

2

{1, 2}을 강조에 beeing 유효한 매개 변수 대신 new int[]{1, 2}을 사용하십시오.

assertEquals(3, pIArrays1.sum(new int[]{1,2})); 
+0

이것은 효과가 있습니다! 한 가지 질문 만합니다. BlueJ에서 마우스 오른쪽 버튼을 클릭하여 * 테스트 클래스 생성 * 및 * 테스트 메소드 작성 * 등등을 수행했습니다. BlueJ가 때때로 이것을 망쳐 버리는 것이 정상입니까? – Yoey

+0

당신은 클래스 이름을 의미합니까? 예, BlueJ가 테스트 클래스에 "Test"라는 접미사를 추가 할 가능성이 있습니다. 나는 실제로 BlueJ와 함께 일한 적이 없다. 기꺼이 도와주세요 " –

관련 문제