0Pricing
C# Academy · 강의

xUnit/MSTest 설정과 단정

테스트 구조(준비-실행-검증)를 배우고, 단정이 테스트를 실패시키는 방식을 살펴보며, 개념을 MSTest/xUnit 특성에 적용합니다.

xUnit/MSTest 설정과 단정은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

단위 테스트란 무엇인가요

목표: 작고 반복 가능한 단위 테스트를 작성합니다.

  • 별도의 테스트 프로젝트에서 MSTest 또는 xUnit 사용하기
  • 각 테스트에서 하나의 동작 확인하기
  • 명확한 이름과 검증 사용하기

AAA 패턴

테스트는 준비 → 실행 → Assert 순서를 따릅니다. 여기서는 간단한 확인으로 검증을 흉내 냅니다.

using System;

public static class MathUtil
{
  // Method under test
  public static int Add(int a, int b)
  {
    return a + b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Arrange
    int a = 2;
    int b = 3;
    int expected = 5;

    // Act
    int actual = MathUtil.Add(a, b);

    // Assert (manual check for this console demo)
    if (actual == expected)
      Console.WriteLine("PASS: Add returned " + actual);
    else
      Console.WriteLine("FAIL: expected " + expected + " but got " + actual);
  }
}

검증 동작

검증은 불일치가 발생하면 예외를 발생시킵니다. 실제 프레임워크도 비슷하게 작동하지만 API가 더 풍부하고 보고서가 더 좋습니다.

using System;

public static class Assert
{
  public static void AreEqual(int expected, int actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected " + expected + ", actual " + actual);
  }

  public static void IsTrue(bool condition, string message)
  {
    if (!condition) throw new Exception("IsTrue failed: " + message);
  }
}

public static class MathUtil
{
  public static int Mul(int a, int b) { return a * b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      int r = MathUtil.Mul(2, 4);
      Assert.AreEqual(8, r);                 // pass
      Assert.IsTrue(r % 2 == 0, "even");     // pass
      Console.WriteLine("All assertions passed.");
    }
    catch (Exception ex)
    {
      Console.WriteLine("TEST FAILED: " + ex.Message);
    }
  }
}

테스트 통과 예시

각 테스트는 하나의 동작을 확인합니다. 실제 MSTest/xUnit에서는 실패한 Assert가 테스트를 실패로 표시합니다.

using System;

public static class StringUtil
{
  public static string Repeat(string s, int n)
  {
    if (n < 0) throw new ArgumentOutOfRangeException("n");
    string r = "";
    for (int i = 0; i < n; i++) r += s;
    return r;
  }
}

public static class Assert
{
  public static void AreEqual(string expected, string actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected [" + expected + "], actual [" + actual + "]");
  }
}

public class Program
{
  static void TestRepeat_Happy()
  {
    string got = StringUtil.Repeat("ab", 3);
    Assert.AreEqual("ababab", got); // pass
  }

  static void TestRepeat_EmptyTimesZero()
  {
    string got = StringUtil.Repeat("x", 0);
    Assert.AreEqual("", got); // pass
  }

  public static void Main(string[] args)
  {
    try { TestRepeat_Happy(); Console.WriteLine("PASS: Happy"); } catch (Exception ex) { Console.WriteLine("FAIL: Happy -> " + ex.Message); }
    try { TestRepeat_EmptyTimesZero(); Console.WriteLine("PASS: Zero"); } catch (Exception ex) { Console.WriteLine("FAIL: Zero -> " + ex.Message); }
  }
}

MSTest와 xUnit 대응

MSTest 기초:

  • 클래스에 [TestClass] 지정
  • 각 테스트에 [TestMethod] 지정
  • Assert.AreEqual/IsTrue/AreNotEqual…

xUnit 기초:

  • 테스트 메서드에 [Fact] 사용
  • Assert.Equal/True/False…
  • 테스트 클래스 특성이 필요하지 않음

이름 지정과 범위 팁

팁:

  • Method_Scenario_ExpectedResult와 같은 방식으로 테스트 이름을 지정합니다.
  • 테스트마다 하나의 검증 또는 하나의 동작만 둡니다.
  • 테스트를 작고 독립적으로 유지합니다.

검증이 실패를 일으키는 이유

간단한 확인: MSTest 또는 xUnit에서 단위 테스트를 실제로 실패하게 만드는 것은 무엇일까요?

복습

복습: AAA 패턴을 사용하고, 검증으로 예상값과 실제값을 비교하며, MSTest([TestMethod]) 또는 xUnit([Fact])에 맞게 작성합니다.

자주 묻는 질문

“xUnit/MSTest 설정과 단정” 강의는 무료인가요?

네 — “xUnit/MSTest 설정과 단정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“xUnit/MSTest 설정과 단정”에서 뭘 배우나요?

테스트 구조(준비-실행-검증)를 배우고, 단정이 테스트를 실패시키는 방식을 살펴보며, 개념을 MSTest/xUnit 특성에 적용합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 1번째 강의입니다.

“xUnit/MSTest 설정과 단정” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. xUnit/MSTest 설정과 단정
  2. 인터페이스를 통한 가짜 객체와 테스트 데이터 작성기
  3. 실패하는 테스트 디버깅
← C# Academy(으)로 돌아가기