tdd 예제 java

By Dave Sanasack, on Aug, 02 2019

명명 테스트 메서드에 대 한 BDD 형식의 예는 다음과 같습니다 단위 테스트에 대 한 좋은 이름을 선택 합니다. 테스트 이름은 원하는 만큼 길 수 있지만 테스트에서 확인한 내용을 나타내야 합니다. 예를 들어 Account 클래스의 기본 생성자를 테스트해야하는 경우 defaultConstructorTest의 이름을 지정합니다. 테스트 이름을 선택하는 데 유용한 한 가지 조언은 테스트 이름을 지정하기 전에 테스트 논리를 작성하는 것입니다. 테스트를 개발하는 동안 내부에서 어떤 일이 일어나는지 알아서 이름을 쉽게 지정할 수 있습니다. 나는 당신의 진술의 일부에 동의합니다. 예를 들어 대부분의 경우 단위 테스트 수준에서 타사 라이브러리를 테스트하는 것은 무의미합니다(기능 테스트를 수행할 때 간접적으로 테스트합니다). 모든 예제에 대한 소스 코드는 github 리포지토리 https://github.com/vfarcic/TechnologyConversations.git 찾을 수 있습니다. 구현은 소스 디렉토리 src / main / java에 있으며 테스트는 src / 테스트 / 자바에서 찾을 수 있습니다. 둘 다 패키지 com.wordpress.technologyconversations.tddbestpractices에 있습니다. 코드는 Java로 작성되며 JUnit을 테스트 프레임워크로 사용합니다.

한 단계 더 나아가 필드의 초기화를 모든 테스트 방법 보다 실행 되는 setUp 메서드로 이동할 수 있습니다. 그러나 나는이 예제를 위해 여기서 멈추겠습니다. 일반적인 방법은 두 개 이상의 소스 디렉터리를 두 개 이상 두는 것입니다. 구현 코드는 src/main/java에 위치해야 하며 src/test/java의 테스트 코드에 있어야 합니다. 더 큰 프로젝트에서소스 디렉터리 수는 증가할 수 있지만 구현과 테스트 간의 구분은 유지되어야 합니다. 테스트 클래스의 줄 수는 해당 구현 클래스의 줄 수보다 큰 경우가 많습니다. 각 구현 방법에 대 한 많은 테스트 메서드가 있을 수 있습니다. 테스트된 메서드를 찾을 수 있도록 테스트 클래스를 분할할 수 있습니다. 예를 들어 StringCalculator에 메서드를 추가하고 제거하는 메서드가 있는 경우 테스트 클래스 StringCalculatorAddTest 및 StringCalculatorRemoveTest가 있을 수 있습니다. 테스트가 테스트하는 코드와 동일한 패키지에 있다는 것을 알면 테스트하는 것이 더 빨리 찾을 수 있습니다.

예를 들어, 이 문서의 예는 패키지 com.wordpress.technologyconversations.tddbestpractices에 있습니다. 이전 사례에서 설명한 것처럼 패키지가 동일하더라도 클래스는 별도의 원본 디렉터리에 있습니다. 컨설턴트 개발자로서 제가 하는 일의 일부는 고객에게 TDD를 시연하는 것입니다. 과거에 나는 예를 들어 FizzBuzz를 사용했다. 클라이언트에 따라 첫 번째 실패 테스트를 작성한 다음 청중의 누군가에게 통과하도록 요청하도록 연습을 설정하는 것을 좋아합니다. 그런 다음 롤오프하고 같은 청중이 운동이 완료 될 때까지 다음 사람에 대한 실패한 테스트를 작성합니다. 이 연습은 TDD를 시연할 뿐만 아니라 페어링(또는 이 경우 폭도)과 지속적인 통합에도 적합합니다. 단위 테스트는 예측할 수 있어야 합니다. 이것은 가장 명백한 요구 사항입니다. 나는 예를 들어 그것을 설명 할 것이다. 송금 (5 % 수수료)의 작동을 확인하기 위해 당신은 당신이 보낸 금액과 출력으로 얻을 얼마나 알고있다.