단위 테스트 사례에 대한 Java 문서 주석 작성


11

제 생각에는 단위 테스트 사례 자체가 코드의 문서 역할을합니다. 우리 회사는 단위 테스트 사례 위에 상세한 Java 문서 주석을 작성하기를 원합니다. 그렇게해야합니까? 당신은 그런 의견을 쓰십니까?


테스트 코드가 잘 작성되고 읽을 수 있다고 가정하면 테스트 코드에서 이러한 종류의 주석의 주요 값은 의도에 대한 진술입니다. 이는 코드 검토 자에게, 심지어 몇 년 안에도 매우 유용 할 수 있습니다. 작성된 코드를 판단하는 것은 수행해야 할 작업을 수행하거나 테스트 대상을 테스트하는 것입니다. 둘째, JAVADOC 또는 간단한 스크립트와 같은 시스템을 사용하여 코드에서 테스트 이름과 주석을 긁어내어 어떤 테스트를 수행하고 있는지에 대한 간단한 문서를 작성할 수 있습니다.
— 척 반 데르 린덴

답변:


8

내가하는 일은 JAVADOC-comment입니다.

  • 클래스는 어떤 클래스가 테스트되는지를 나타냅니다 (해당 주제에 대한 모범 사례에서는 테스트 케이스 이름이 클래스 이름 + "Test"또는 + "TestCase"여야 함). 이는 {@link XXXClass} JAVADOC 주석을 사용하여 수행됩니다.

  • 테스트 할 메소드를 나타내는 메소드 ({@link XXXClass # method1}) 때로는 모든 경로를 올바르게 테스트하기 위해 클래스의 한 메소드에 대해 여러 테스트 메소드가 필요합니다. 그것이 일어날 때, 나는 내부에서 테스트중인 경로를 나타내는 하나의 추가 줄을 씁니다 (그러나 나는 한 줄 규칙에서 벗어나지 않습니다)

그 외에도 다른 의견은 없습니다. 다른 곳에서 관심을 갖기 위해 Cobertura 와 같은 코드를 사용하여 예쁜 코드 적용 그래픽을 생성하고 행복하게 만들 수 있습니다 :-)

추가 참고 사항 : 단위 테스트 사례를 언급하고 있습니다. 통합 테스트 사례에 대해 이야기하는 경우 진행 상황을 설명하기 위해 1-2 줄 이상이 필요할 수 있습니다 ...



0

Javadoc 주석은 별도의 참조 문서에서 추출 및 형식화 할 수 있으며 단위 테스트는 불가능합니다. 또한 단어로 작성하는 내용이 실제 코드와 다를 수 있으며 일반적으로 실제 예상되는 동작을 단어로 설명합니다. 버그를 찾는 방법 중 하나는 문서가 실제 코드와 일치하지 않는 경우 문서를 비교하는 것입니다.

단위 테스트는 문서화가 아니라 테스트를위한 것입니다. 문서로 유닛 테스트를 사용하는 것은 잘못되어 있어서는 안됩니다.


2
코드를 문서화하는 데 유용한 단위 테스트 모음이 매우 유용합니다. 그것들은 누군가의 코드 가 어떻게 사용 되어야 하는지에 대한 참조 구현과 코드 가 그렇게 사용될 때 코드가 올바르게 동작한다는 증거를 제공합니다.
— Bill Michell

@Bill-그것에 대한 논쟁은 없습니다. 적절한 문서를 대체 하지 않습니다 .
— littleadv

문서의 대상에 따라 다르지만 경우에 따라 정확합니다.
— Bill Michell

1
이상적으로 단위 테스트는 시스템의 유일한 문서가 아니어야하지만 실제로는 10 개 중 9 개 프로젝트가 레거시 코드를 사용 하여 문서 를 작성하는 것이 운이 좋을 수도 있습니다 . 그리고이 경우 실제 코드와 완전히 일치하지 않는 많은 문서에 대해 단위 실행 및 통과 단위 테스트를 선호합니다. (예, 심지어 Javadoc도 가능합니다.)
— Péter Török

@ PéterTörök 그래 ... 나는 여러 다른 고용주, ​​아주 유명한 회사들 사이를 옮겼습니다. 많은 레거시 코드. 내가 쓴 유일한 단위 테스트 . 그래서 당신은 매우 운이 좋았습니다. 당신이 본 것이 어디에서나 일어난다 고 가정하지 마십시오. 그리고 단위 테스트가 있더라도 누가 맞다고 말했습니까? 누가 자신이해야 할 일을 다루었다고 말했습니까? 누가 기대되는 결과가 무엇인지 말했습니까? 단위 테스트가 동기화되지 않았다고 가정하는 이유는 무엇입니까? 그들이 "통과"했기 때문에? 무의미한 말.
— littleadv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.