나는 파서를 작성하고 있으며 그 일환으로 Expander
하나의 복잡한 문장을 여러 개의 간단한 문장으로 "확장" 하는 클래스가 있습니다. 예를 들어 다음을 확장합니다.
x = 2 + 3 * a
으로:
tmp1 = 3 * a
x = 2 + tmp1
이제이 클래스를 테스트하는 방법, 특히 테스트를 정렬하는 방법에 대해 생각하고 있습니다. 입력 구문 트리를 수동으로 만들 수 있습니다.
var input = new AssignStatement(
new Variable("x"),
new BinaryExpression(
new Constant(2),
BinaryOperator.Plus,
new BinaryExpression(new Constant(3), BinaryOperator.Multiply, new Variable("a"))));
또는 문자열로 작성하여 구문 분석 할 수 있습니다.
var input = new Parser().ParseStatement("x = 2 + 3 * a");
두 번째 옵션은 훨씬 간단하고 짧으며 읽기 쉽습니다. 그러나 또한에 밀도를 도입하여 Parser
버그 Parser
가이 테스트에 실패 할 수 있음을 의미합니다 . 따라서 테스트는의 단위 테스트가되는 것을 멈추고 Expander
기술적으로 Parser
와 의 통합 테스트가되는 것 같습니다 Expander
.
내 질문은 :이 Expander
클래스 를 테스트하기 위해 이러한 종류의 통합 테스트에 주로 (또는 완전히) 의존하는 것이 괜찮 습니까?
Parser
0으로 만 습관적으로 커밋하는 경우 버그가 다른 테스트에 실패 할 수 있다는 것은 문제가되지 않습니다Parser
. 내가 오히려 걱정하고있는 것은이 버그 가 실패했을Parser
때이 테스트를 성공시킬 수 있다는 버그이다 . 단위 테스트는 결국 버그를 찾기 위해 존재합니다. 테스트는 그렇지 않은 경우에는 중단됩니다.