2011-02-24 4 views
4

우리 팀은 테스트에 대해 개발자를 교육하고 있습니다. 그들은 왜 테스트를 작성해야 하는지를 이해하고 테스트를 작성해야하지만 좋은 테스트를 작성하는 데는 다소 부족합니다.JUnit은 실제로 assertion을 실행하지 않는 테스트를 수행합니다.

는 그냥 그래서 그들은 적어도 반드시 자신의 코드를보고 그들에게 기대 출력을 준 만들고 있었다이

public void SomeTest{ 

@Test 
public void testSomething{ 
System.out.println(new mySomething.getData()); 
} 

같은 커밋 보았다.

코드 검토 아이디어를 실제로 팔기 전에 약간의 시간이 걸릴 것입니다. 그 동안 JUnit이 실제 assertXXX가 없거나 구문에 실패한 테스트를 실패하는 것을 고려하고있었습니다. 그런 다음 실패 메시지에 "테스트에서 어설 션을 사용하고 실제로 출력을 검사해야합니다!"라고 말하고 싶습니다. "

나는 이것이 assertTrue(1 == 1);과 같은 전화로 이어질 것으로 충분히 예상한다. 우리는 적절한 테스트 및 코드 리뷰를 위해 팀 구매에 노력하고 있습니다. 이미 개발자가 쉽게 사용할 수 있도록하기 위해 사용할 수있는 기술 메커니즘이 있습니까? 새로운 사람들이 이해할 수 있도록 돕는 기술적 메커니즘은 무엇입니까?

답변

1

일부 정적 코드 분석기를 사용할 수 있습니다.

나는 JUnit rule set을 포함하는 PMD을 사용합니다. IDE에서 규칙 위반을 표시 할 많은 IDE plugins이 있습니다. 필요에 따라 규칙 세트를 구성 할 수 있습니다.

다른 규칙 세트에서도 이익을 얻을 수 있습니다. 코드 스타일/모범 사례 위반에 대해 경고합니다 (도구 또는 사용자가 바보 인 경우 때때로 결정해야하지만 :-)).

2

멘토링, 교육, 코드 검토 등 조직적인 변화를 고려해야한다고 생각합니다.

도구는 목표를 기본으로 이해하고 선의로 사용하는 경우에만 도움이됩니다. 이 중 하나가 누락되면 도움이되지 않습니다.

인간은 지형지 물을 모으거나 메트릭을 해결하기 위해 지능형 일뿐입니다. 나는 당신이 한 가지 유용한 테스트를 작성할 수 없다면 "그들"이 선내에있다는 당신의 평가가 정확하지 않다고 생각합니다. 자동 도구는이 단계에서 올바른 도구가 아닙니다. 프로그램이 다음에 무엇을해야 하는지를 알면 배울 수 없습니다.

+0

나는 사람들을 사주고 교육을 받도록 당신과 함께합니다. 저는 다른 개발자를 돕는 도구를 더 찾고 있습니다. 코드를 모니터하여 나쁜 테스트를 발견하면 플래그를 지정하고 여전히 배우는 사람들과 대화 할 수 있습니다. – Freiheit

0

향후 시청자를 위해 명시된 질문에 대답하십시오.

JUnit은 Exception, Error throws -> test가 실패하면 reflection을 사용하여 테스트 된 함수를 실행하고 그렇지 않으면 성공합니다. Assert 클래스는 유틸리티 클래스 일뿐입니다.

관련 문제