0Pricing
C# Academy · Lekcja

Konfiguracja xUnit/MSTest i asercje

Proszę poznać strukturę testu (Arrange-Act-Assert), sprawdzić, jak asercje powodują niepowodzenie testów, oraz powiązać te idee z atrybutami MSTest/xUnit.

Konfiguracja xUnit/MSTest i asercje to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.

Czym jest test jednostkowy?

Cel: Pisać małe, powtarzalne testy jednostkowe.

  • Oddzielny projekt testów korzysta z MSTest lub xUnit
  • Każdy test sprawdza jedno zachowanie
  • Używaj jasnych nazw i asercji

Wzorzec AAA

Testy stosują schemat Arrange → Act → Assert. Tutaj symulujemy asercję za pomocą prostego sprawdzenia.

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);
  }
}

Działanie asercji

Asercja zgłasza wyjątek w przypadku niezgodności. Rzeczywiste frameworki działają podobnie (mają bogatsze API i lepsze raporty).

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);
    }
  }
}

Przykład zakończonych powodzeniem testów

Każdy test sprawdza jedno zachowanie. W rzeczywistych testach MSTest/xUnit nieudana Assert oznacza test na czerwono.

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); }
  }
}

Odpowiedniki w MSTest i xUnit

Podstawy MSTest:

  • [TestClass] przy klasie
  • [TestMethod] przy każdym teście
  • Assert.AreEqual/IsTrue/AreNotEqual…

Podstawy xUnit:

  • [Fact] przy metodzie testowej
  • Assert.Equal/True/False…
  • Atrybut klasy testowej nie jest potrzebny

Wskazówki dotyczące nazw i zakresu

Wskazówki:

  • Nazywaj testy według schematu Method_Scenario_ExpectedResult
  • Jedna asercja lub jedno zachowanie na test
  • Testy powinny być małe i niezależne

Asercje powodują niepowodzenie testów

Szybkie sprawdzenie: Co faktycznie powoduje niepowodzenie testu jednostkowego w MSTest lub xUnit?

Podsumowanie

Podsumowanie: Stosuj wzorzec AAA, porównuj oczekiwane i rzeczywiste wartości za pomocą asercji oraz korzystaj z MSTest ([TestMethod]) lub xUnit ([Fact]).

Często zadawane pytania

Czy lekcja „Konfiguracja xUnit/MSTest i asercje” jest bezpłatna?

Tak — pełny tekst „Konfiguracja xUnit/MSTest i asercje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Konfiguracja xUnit/MSTest i asercje”?

Proszę poznać strukturę testu (Arrange-Act-Assert), sprawdzić, jak asercje powodują niepowodzenie testów, oraz powiązać te idee z atrybutami MSTest/xUnit. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Konfiguracja xUnit/MSTest i asercje”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja xUnit/MSTest i asercje
  2. Fakes za pośrednictwem interfejsów i kreatory danych testowych
  3. Debugowanie nieudanych testów
← Powrót do C# Academy