본문 바로가기
TIL/TIL

(Unit test) Assertions && Test frameworks

by koreashowme 2020. 1. 15.

유닛 테스팅은 Assertions(해결하고자 하는 '주장')이라는 개념으로 이루어져 있습니다.

 

프로그래머들은 자신이 주장한 특정한 환경에서 주어진 값이 옳은지 여부를 해결하기 위한 Assertion을 내세우게 됩니다.

 

간단한 예로:

function square(x) { return x * x; }

 

위 함수에 대한 아주 단순한 유닛 테스트는 다음과 같이 적을 수 있습니다:

console.log(square(5) === 25);

 

  • 만약 square라는 함수에 5라는 값을 input 값으로 넣었을 때 output 값이 25가 나오면 true를 반환합니다.

  • 그러나 sqaure라는 함수에 5라는 값을 input 값으로 넣었을 때 output 값이 125가 나오면 false를 반환합니다.

 

Test frameworks

 

위에 잠시 살펴본 바와 같이 테스트를 처음 구성할 때 console.log를 사용해서 유닛 테스트를 하는 방식은 문제가 되지 않습니다. 분명 테스트를 하지 않고 완성된 코드를 실행하려는 습관보다 훨씬 더 좋은 습관입니다.

 

하지만 보다 더 전문적인 프로그래머들이라면 Assertion을 기반으로 한 프레임워크를 사용하여, 잘 구성된 테스트를 통해 발생한 문제들을 빠르게 대처할 수 있어야 합니다.

 

Assertion의 한가지 예를 들면 다음과 같습니다:

var output = square(5); expect(output).to.equal(25);

 

 

당장은 테스트 프레임워크에 대해 전부 이해할 필요는 없습니다.

비록 전문적인 프로그래머가 되는 첫걸음을 내딛는 과정일지라도, console.log를 찍는 것보다 assertion을 통해 테스트를 작성하는 것은 중요한 훈련이 될 것입니다. 다음과 같이 아주 쉬운 assertion을 구성해보세요:

function assertEqual(actual, expected, testName) { if (actual === expected) { console.log('passed'); } else { console.log('FAILED ' + testName + ': Expected ' + expected + ', but got ' + actual); } }

위와 같이 console.log를 직접 함수 내에 사용하지 않고, assertion 내에 사용할 수도 있습니다.

comment