검색결과 리스트
유닛테스트에 해당되는 글 1건
- 2014.01.07 C# 유닛테스트 정리
유닛테스트 준비
유닛테스트 초기화와 실행 순서
지정한 유닛테스트만 실행
카테고리
유닛테스트 예제
| [TestCategory("ScoreCalculator")] [TestMethod] public void Test주고_받는_점수_계산하기() { PrivateType TestObject = new PrivateType(typeof(YakuLibNET.ScoreCalculator));
bool Is부모가_이긴 = true; int 이긴_플레이어_점수 = 0; object Result; YakuLibNET.KUK_END_SCORE ResultScore;
// [테스트-부모가 이긴 경우] Is부모가_이긴 = true; 이긴_플레이어_점수 = 3900;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(3900, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(1300, ResultScore.부모윈_진_자식이_내는_점수);
Is부모가_이긴 = true; 이긴_플레이어_점수 = 2000;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(700, ResultScore.부모윈_진_자식이_내는_점수);
Is부모가_이긴 = true; 이긴_플레이어_점수 = 7700;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(2600, ResultScore.부모윈_진_자식이_내는_점수);
Is부모가_이긴 = true; 이긴_플레이어_점수 = 11600;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(3900, ResultScore.부모윈_진_자식이_내는_점수);
Is부모가_이긴 = true; 이긴_플레이어_점수 = 10600;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(3600, ResultScore.부모윈_진_자식이_내는_점수);
// [자신이 이긴 경우] Is부모가_이긴 = false; 이긴_플레이어_점수 = 1300;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(700, ResultScore.자식윈_진_부모가_내는_점수); Assert.AreEqual(400, ResultScore.자식윈_진_자식이_내는_점수);
Is부모가_이긴 = false; 이긴_플레이어_점수 = 5200;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(2600, ResultScore.자식윈_진_부모가_내는_점수); Assert.AreEqual(1300, ResultScore.자식윈_진_자식이_내는_점수);
Is부모가_이긴 = false; 이긴_플레이어_점수 = 7100;
Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(이긴_플레이어_점수, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(3600, ResultScore.자식윈_진_부모가_내는_점수); Assert.AreEqual(1800, ResultScore.자식윈_진_자식이_내는_점수); } |
테스트 함수 리스트
public이 아닌 메소드 테스트 하기
| [TestMethod] public void Test주고_받는_점수_계산하기() { // ScoreCalculator는 private 멤버 함수이다. PrivateType TestObject = new PrivateType(typeof(YakuLibNET.ScoreCalculator));
// [테스트-부모가 이긴 경우] bool Is부모가_이긴 = true; int 이긴_플레이어_점수 = 3900;
object Result = TestObject.InvokeStatic("주고_받는_점수_계산하기", Is부모가_이긴, 이긴_플레이어_점수); YakuLibNET.KUK_END_SCORE ResultScore = (YakuLibNET.KUK_END_SCORE)Result; Assert.AreEqual(3900, ResultScore.이긴_플레이어가_받는_점수); Assert.AreEqual(1300, ResultScore.부모윈_진_자식이_내는_점수);
} |
| public class PrivateAccess { private static string NameStatic { get { return typeof(PrivateAccess).Name; } }
private string Name { get; set; }
public PrivateAccess(string name) { this.Name = name; }
private int Add(int lhs, int rhs) { return lhs + rhs; }
private static int AddStatic(int lhs, int rhs) { return lhs + rhs; } private int Subtract(int lhs, int rhs) { return lhs - rhs; } }
[TestMethod()] public void PrivateAccessConstructorTest() { // Arange PrivateObject po = new PrivateObject(typeof(PrivateAccess), new object[] { "こんにちわ" }); string name = "こんにちわ"; // Act // PrivateAccess target = new PrivateAccess(name); // Assert Assert.AreEqual(name, po.GetProperty("Name")); }
public void AddTest() { PrivateObject po = new PrivateObject(typeof(PrivateAccess), new object[] { "こんにちは" });
//PrivateAccess_Accessor target = new PrivateAccess_Accessor(param0); int lhs = 2; int rhs = 3; int expected = 5; int actual; actual = (int) po.Invoke("Add", new object[]{lhs, rhs}); Assert.AreEqual(expected, actual); }
public void AddStaticTest() { PrivateType pt = new PrivateType(typeof(PrivateAccess)); int lhs = 1; int rhs = 2; int expected = 3; int actual; actual = (int) pt.InvokeStatic("AddStatic", new object[] { lhs, rhs }); Assert.AreEqual(expected, actual); }
[TestMethod()] [DeploymentItem("SampleLibrary.dll")] public void NameTest() { PrivateObject po = new PrivateObject(new PrivateAccess("hello"));
// PrivateAccess_Accessor target = new PrivateAccess_Accessor(param0); string expected = "hello"; string actual = po.GetProperty("Name") as string; Assert.AreEqual(expected, actual); }
[TestMethod()] public void NameStaticTest() { PrivateType pt = new PrivateType(typeof(PrivateAccess)); string actual; actual = pt.GetStaticProperty("NameStatic") as string; Assert.AreEqual("PrivateAccess", actual); } |
| public class UniqueNumberRepository { const int MaxStockCount = 200000; const int MinStockCount = 50000; static Int64 seqNumber = 0; static Int64 lastNumber = 0; }
PrivateType TestObject = new PrivateType(typeof(UniqueNumberRepository)); TestObject.SetStaticField("seqNumber", 1); TestObject.SetStaticField("lastNumber", 10); |
System.Transactions를 사용한 DB 유닛테스트
예외 발생 여부 테스트
// InvalidOperationException 이 발생하면 테스트 성공
[TestMethod()]
[ExpectedException(typeof(InvalidOperationException))]
public void TestMethod()
{
// 여기서 InvalidOperationException 예외가 발생하는지 테스트
}
참고
댓글