C#:
Pisanie testów
Jak to zrobić:
Deweloperzy C# głównie używają frameworków NUnit lub xUnit do pisania testów ze względu na ich elastyczność i obszerny zestaw funkcjonalności. Oto podstawowy przykład użycia NUnit do testowania prostej funkcji dodawania:
- Zainstaluj NUnit i NUnit3TestAdapter poprzez menedżera pakietów NuGet lub interfejs wiersza poleceń .NET:
dotnet add package NUnit
dotnet add package NUnit3TestAdapter
Utwórz projekt biblioteki klas C#, jeśli jeszcze tego nie zrobiłeś.
Napisz prostą funkcję do testowania. Na przykład metodę dodawania w klasie o nazwie
Calculator
:
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
- Napisz klasę testową używając NUnit:
using NUnit.Framework;
namespace CalculatorTests
{
[TestFixture]
public class CalculatorTests
{
[Test]
public void Add_AddsTwoIntegers_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
int expected = 5;
// Act
int actual = calculator.Add(2, 3);
// Assert
Assert.AreEqual(expected, actual);
}
}
}
- Uruchom test za pomocą test runnera twojego IDE lub interfejsu wiersza poleceń .NET:
dotnet test
Przykładowy wynik:
Zakładając, że twój test przeszedł pomyślnie, powinieneś zobaczyć wynik podobny do tego:
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 1.2345 Seconds
Użycie xUnit:
Jeśli preferujesz xUnit, konfiguracja jest podobna do NUnit. Oto jak przepisać przykładowy test dla klasy Calculator
używając xUnit:
- Zainstaluj xUnit i xUnit.runner.visualstudio:
dotnet add package xUnit
dotnet add package xUnit.runner.visualstudio
- Napisz klasę testową używając xUnit:
using Xunit;
namespace CalculatorTests
{
public class CalculatorTests
{
[Fact]
public void Add_AddsTwoIntegers_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
int expected = 5;
// Act
int actual = calculator.Add(2, 3);
// Assert
Assert.Equal(expected, actual);
}
}
}
- Uruchom test za pomocą interfejsu wiersza poleceń .NET lub zintegrowanego test runnera twojego IDE.
Zarówno NUnit, jak i xUnit oferują potężne funkcje do testowania parametryzowanego, operacji ustawienia/zwolnienia zasobów i organizowania testów w kategorie, czyniąc je nieodzownymi narzędziami w zestawie programisty C# do zapewniania jakości kodu i jego funkcjonalności.