[c#] 다형성을 활용한 유닛 테스트
다형성(Polymorphism)은 객체 지향 프로그래밍에서 중요한 개념으로, 서로 다른 클래스의 객체가 동일한 인터페이스를 통해 동일하게 동작할 수 있도록 하는 특성을 의미합니다. C#에서는 다형성을 통해 유닛 테스트(Unit Test) 작성 시에 효율적으로 코드를 구성할 수 있습니다.
public abstract class Shape
{
public abstract double CalculateArea();
}
public class Circle : Shape
{
public double Radius { get; set; }
public override double CalculateArea()
{
return Math.PI * Radius * Radius;
}
}
public class Rectangle : Shape
{
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea()
{
return Width * Height;
}
}
위의 예시는 추상 클래스 Shape
를 상속받아 Circle
과 Rectangle
클래스를 구현한 것입니다. 이제 이를 활용하여 유닛 테스트를 작성해보겠습니다. 아래는 MSTest 프레임워크를 사용한 유닛 테스트의 예시입니다.
[TestClass]
public class ShapeTests
{
[TestMethod]
public void CircleAreaCalculation()
{
// Arrange
Shape circle = new Circle { Radius = 5 };
// Act
double area = circle.CalculateArea();
// Assert
Assert.AreEqual(78.5, area);
}
[TestMethod]
public void RectangleAreaCalculation()
{
// Arrange
Shape rectangle = new Rectangle { Width = 4, Height = 5 };
// Act
double area = rectangle.CalculateArea();
// Assert
Assert.AreEqual(20, area);
}
}
위의 유닛 테스트에서 Shape
클래스를 상속받은 Circle
과 Rectangle
객체를 생성하여 각각의 면적을 계산하고, 예상 값과 실제 값이 일치하는지를 확인합니다.
다형성을 활용하면 동일한 인터페이스를 갖는 객체들을 효율적으로 다룰 수 있으며, 이를 통해 유지보수가 쉬운 테스트 코드를 작성할 수 있습니다.
참고 문헌:
- MSDN. “다형성(C# 프로그래밍 가이드).” Microsoft. https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/polymorphism [2021년 9월 20일 액세스]