Unittest készítése C#-ban

Az egységtesztek olyan tesztek, amelyek a kód egy kisebb egységét tesztelik, általában egy metódust vagy függvényt.

C#-ben számos unittest keretrendszer létezik, amelyek különböző célokra használhatók. Néhány példa:

A C#-ban az unit-tesztek készítésére a következő lépéseket kell követni:

  1. Válasszunk egy tesztkeretrendszert
  2. Telepítsük a tesztkeretrendszert: Telepítsük a kiválasztott tesztkeretrendszert a projektünkbe.
  3. Hozzunk létre egy teszt osztályt: Hozzunk létre egy új osztályt, amelyben a teszteket fogjuk írni.
  4. Írjunk teszteket: Írjunk teszteket a kód egységekre, amelyeket tesztelni szeretnénk.

xUnit

Az xUnit egy nyílt forráskódú unittest keretrendszer C#-hez. Ez a keretrendszer lehetővé teszi a fejlesztők számára, hogy egységteszteket írjanak a C# kódjukhoz.

Az xUnit használatának lépései: - Telepítsük az xUnit-t: Az xUnit-t telepíthetjük a NuGet csomagkezelő segítségével. Ehhez nyissuk meg a projektünket a Visual Studio-ban, majd kattintsunk jobb gombbal a projektre és válasszuk a "Manage NuGet Packages" lehetőséget. Keressük meg az xUnit-t és kattintsunk a "Install" gombra. - Hozzunk létre egy teszt osztályt: Hozzunk létre egy új osztályt, amelyben a tesztek találhatók. - Írjunk egy teszt metódust: Írjunk egy új metódust, amelyben a teszt végrehajtódik. Ez a metódusnak [Fact] vagy [Theory] attribútummal kell rendelkeznie.

Teszt metódusok

Az xUnit-ben kétféle teszt metódus létezik:


**Példa egy egyszerű teszt metódusra:**
using Xunit; public class Calculator { public int Osszead(int a, int b) { return a + b; } } public class CalculatorTests { [Fact] public void Osszead_KetPozitivSzam() { // Arrange Kalkulator kalkulator = new Kalkulator(); int a = 2; int b = 3; // Act int eredmeny = kalkulator.Osszead(a, b); // Assert Assert.Equal(5, eredmeny); } }

Tesztelés beállítása C#-ban

A tesztelés beállításának lépései: - Nyissuk meg a projektünket. - Kattintsunk jobb gombbal a projektre és válasszuk a "Properties" lehetőséget. - Válasszuk a "Test" fület és állítsuk be a tesztelés beállításait. - Futtassuk a teszteket a "Test Explorer" ablakban.

Tesztelés futtatása - Nyissuk meg a "Test Explorer" ablakot - Válasszuk ki a teszteket - Futtassuk a teszteket a "Run All" gombra kattintva.

A fenti példában:

Magyarázat

A fenti példában teszteljük a Calculator osztály Add metódusát. A teszt a következőket teszi:

  1. Létrehoz egy Calculator példányt.
  2. Beállítja a teszt adatait (a és b értékét).
  3. Meghívja az Add metódust a teszt adatokkal.
  4. Ellenőrzi, hogy az eredmény helyes-e.

Ha a teszt sikeres, akkor az Add metódus helyesen működik. Ha a teszt megbukik, akkor valami probléma van a metódussal.

A xUnit keretrendszer számos további funkciót nyújt, például:


Az előző feladatban bemutatott példához a következő környezetet kell kialakítani:

Fájlok és könyvtárak

Könyvtár struktúra


Egy picit összetettebb példa:

Logic.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp.CLI { public class Logic { public int AddNumbers(short a, short b) { return a + b; } } }

UnitTest1.cs:

using ConsoleApp.CLI; namespace ConsoleApp.Test { public class TestLogic { Logic logic; public TestLogic() { logic = new Logic(); } [Theory] [InlineData(4,2,2)] [InlineData(6, 3, 3)] [InlineData(6, 2, 3)] public void TestPositive(int expectedValue, short operand1, short operand2) { Assert.Equal(expectedValue, logic.AddNumbers(operand1, operand2)); } [Theory] [InlineData(4, 2, 2)] [InlineData(6, 3, 3)] [InlineData(6, 2, 3)] public void TestNegative(int expectedValue, short operand1, short operand2) { Assert.NotEqual(expectedValue, logic.AddNumbers(operand1, operand2)); } } }

Feladatok:

1. feladatsor:

Minden metódushoz készüljön negatív és pozitív teszt!

  1. Függvény: add(a, b)
  2. Függvény: subtract(a, b)
  3. Függvény: multiply(a, b)
  4. Függvény: divide(a, b)
  5. Függvény: is_even(n)
  6. Függvény: is_odd(n)
  7. Függvény: max(a, b)
  8. Függvény: min(a, b)
  9. Függvény: absolute(n)
  10. Függvény: square(n)

2. feladatsor

Minden metódushoz készüljön negatív és pozitív teszt!

  1. Függvény: sum_of_even_numbers(numbers)
  2. Függvény: count_odd_numbers(numbers)
  3. Függvény: find_max_number(numbers)
  4. Függvény: find_min_number(numbers)
  5. Függvény: is_palindrome(s)
  6. Függvény: remove_duplicates(numbers)
  7. Függvény: find_common_elements(list1, list2)
  8. Függvény: is_prime(n)
  9. Függvény: find_factors(n)
  10. Függvény: is_sorted(numbers)

3. feladatsor

Minden metódushoz készüljön negatív és pozitív teszt!

  1. Függvény: find_max(numbers)
  2. Függvény: find_min(numbers)
  3. Függvény: is_sorted(numbers)
  4. Függvény: remove_duplicates(numbers)
  5. Függvény: find_common_elements(list1, list2)

4. feladatsor

Minden metódushoz készüljön negatív és pozitív teszt!

  1. Függvény: calculate_area(shape, side)
  2. Függvény: calculate_perimeter(shape, side)
  3. Függvény: is_rectangle(sides)
  4. Függvény: find_diagonals(sides)