[C#] C# 단위 테스트 구축하기
카테고리: C Sharp
어떤 함수를 작성하고, 해당 함수를 테스트 하기 위해서는 결국 해당 함수를 호출해야 합니다. 해당 함수를 호출하는것이 간단하면 문제가 되지 않겠지만, 특정 프레임워크를 통해 프로그램을 만들었다라고 했을 때, 그 함수가 호출되어야 하는 시점까지 프로그램을 돌려야 한다는 단점이 있습니다.
해당 과정을 줄이고, 함수를 단위별로 테스트하기 위해 Unit Test를 하는것을 권장합니다. C#에서는 MSTest 프레임워크를 제공하여 테스트를 할 수 있도록 합니다.
MSTest 프레임워크를 만드는 방법은 다음과 같습니다. Solution에 우클릭 - Add - NewProject를 하고, MsTest를 선택하여 만듭니다.
이렇게 하면, Test를 위한 클래스라이브러리가 생성 됩니다. 여기서 기본 생성되는 Test1에 테스트 코드를 작성해 보겠습니다. 기본적으로 Test 클래스는 TestClass
라는 어트리뷰트를 달고 있어야 합니다. 또한, 테스트할 코드가 적혀있는 함수에는 TestMethod
라는 어트리뷰트가 있어야 합니다.
MathUtil 이라는 클래스를 생성 후, 더하기 빼기를 했을 때, 원하는 결과가 나오는지에 대한 테스트 입니다.
Assert는 확신구문으로서 다음과 같은 메서드들을 제공합니다.
Assert.IsTrue(value); //: value 가 True 인지 테스트한다.
Assert.IsFalse(value); //: value 가 False 인지 테스트한다.
Assert.AreEqual(expected, value); //: 예상값 expected 과 실제 값 value 가 같은지 테스트한다.
Assert.IsNull(value); //: vlaue 가 null 인지 테스트한다.
Assert.Assert.IsNotNull(value); //: vlaue 가 null 이 아닌지 테스트한다.
//위의 메소드들은 매개변수 2개를 사용할수있다.
//1번 매개변수는 위와같고 2번 매개변수는 실패했을때 보여줄 메시지를 보여준다.
Assert.IsNull(value,"value가 null이 아니다."); // : vlaue가 null인지 테스트하고 만약 테스트 실패라면 메시지를 보여준다.
이제, 테스트를 돌려봅니다. 테스트 프로젝트를 우클릭 하면, RunTest가 있습니다. 해당 기능을 사용하여 테스트를 돌려줍니다.
확신한 조건들이 다 통과되어 테스트가 무사히 통과된것을 볼 수 있습니다. 지금은 간단하게 테스트 하였지만, 인자로 들어가는 데이터들의 조건이 많아지거나, 결과값을 예상하기 어려울 때, Assert를 사용하여 여러가지 경우를 테스트 한다면, 안정적이고 빠른 코드를 만들 수 있습니다.
댓글 남기기