2014-10-05 11 views
1

Junit 테스트에 문제가있어 온라인 정보가 거의 없습니다.종속 테스트 테스트

첫째로, 나는이 방법

1. setTable(int r, int c, String s)

2. getTableString()을 테스트 할 수 있습니다.

첫 번째 테스트를 관리했지만 두 번째 테스트에서는 이미 테이블이 구축되어 있어야합니다 (테이블은 getter로 private static char[][]이고 첫 번째 방법으로 빌드 됨).

이 두 번째 방법을 테스트하려면 어떻게해야합니까? 나는이 일을 생각 : 그것은 setTable 작업에 의존 이후

public void testGetTableString() { 

     MyClass test = new MyClass(); 
     test.setTable(5, 4, "string"); 
     String toTest = test.getTableString(); 
     assertEquals("expected result", toTest); 
    } 

이 그러나 잘 보이지 않는다.

또한 설치() 메소드에 test.setTable(5,4,"string")를 초기화 생각하지만 내가 setUp() 방법 setTable 각 시간 매개 변수를 변경하지 내 테스트를 추적 할 수 있어야 거라고 의미 할 것입니다; 게다가 내 첫 번째 방법도 역시 setUp() 일 것이고, 나는 그것을 원치 않는다.

도움을 주시면 대단히 감사하겠습니다.

+1

으로 확인하지 않는 한

, 당신은 정말 setXY 작품을 말할 기운 다. 이러한 종류의 의존성으로부터 완전히 벗어나는 것은 어렵습니다. 추신. 테이블이 정적 인 이유는 무엇입니까? –

+0

감사합니다. 다시 점검하고 제거했습니다. 정적 인 이유는 없습니다. – Tiberiu

+0

클래스의 전체 동작을 테스트해야합니다. 즉, 무언가를 저장하고 나중에 검색 할 수 있습니다. 어떤 테스트 케이스가 클래스의 테스트에 포함 시킬지 결정할 때, 여러 메소드에 걸쳐있는 테스트 케이스로 끝나면 놀랄 필요가 없습니다. 이것은 정상이며 정상입니다. 클래스 자체의 전반적인 동작 요구 사항을 고려하지 않고 각 메소드를 개별적으로 테스트하는 것은 올바르지 않습니다. –

답변

2

RE : 그러나 이것은 setTable 작동에 의존하기 때문에 올바르게 보이지 않습니다.

당신이 한 일은 완벽하게 적절합니다. getTableString()이 method-under-test 인 경우이를 분리하는 가장 좋은 방법은 필요한 사전 조건을 설정하는 것입니다. 또한이 테스트 메소드에서 setTable 호출을 사용하면 모든 테스트 메소드에서 볼 수있는 setup() 호출과 달리이 조건을이 테스트로 격리했습니다.

1

두 가지 테스트 방법 (테스트)이 테스트를위한 두 가지 방법이 있어야한다는 것을 의미하지는 않습니다. 단일 클럽 테스트에서 클럽 활동을 할 수 있습니다. 그들이 관련되어 있기 때문에 당신은 내가 당신의 첫 번째 테스트는 잘 생각 getXY