Cześć,
Mam taki problem, gdyż staram się wyrobić nawyk pisania testów jednostkowych (TDD) i czytając różne kursy i poradniki spotkałem się z wieloma podejściami do testów.
Najbardziej przekuje mnie podejście że test powinien być prosty i szybki, niezależny i niekonfigurowalny.
Teraz mam do was pytanie które z poniższych podejść jest lepsze, a może obydwa są złe? Oraz drugie pytanie jak dokładnie testować aplikacje?
Przykładowy kod C# & nUnit
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
[TestFixture]
public class CalculatorUnitTest
{
//[SetUp]
//public void Initialize()
//{
// ICalculator calculator = new Calculator();
//}
[Test, Combinatorial]
public void Add_TNumbers_Calculated([Values(-2, -2.2, 0, 2, 2.2)]double first, [Values(-3, -3.3, 0, 3, 3.3)]double second)
{
// Arrange:
ICalculator calculator = new Calculator();
double expected = first + second;
// Act:
double result = calculator.Add(first, second);
// Assert:
Assert.AreEqual(expected, result);
}
[TestCase(2, 2, 4)]
[TestCase(-2, -2, -4)]
[TestCase(2, -2, 0)]
[TestCase(-2, 2, 0)]
[TestCase(-2, 0, -2)]
[TestCase(2, 0, 2)]
[TestCase(0, -2, -2)]
[TestCase(0, 2, 2)]
[TestCase(0, 0, 0)]
[TestCase(3, 2, 1)]
[TestCase(-3, -2, -5)]
[TestCase(3, 0, 3)]
[TestCase(-3, 0, -3)]
[TestCase(0, 2, -2)]
[TestCase(0, -2, -2)]
[TestCase(-3, 2, -1)]
[TestCase(3, -2, 5)]
[TestCase(0, 0, 0)]
[TestCase(3.3, 2, 1.3)]
[TestCase(3.3, 2.2, 1.1)]
[TestCase(-3.3, -2.2, -1.1)]
[TestCase(3.3, 0, 3.3)]
[TestCase(-3.3, 0, -3.3)]
[TestCase(0, 2.2, -2.2)]
[TestCase(0, -2.2, -2.2)]
[TestCase(-3.3, 2.2, -5.5)]
[TestCase(3.3, -2.2, 5.5)]
public void Add_TwoNumbers_Calculated_SecontMethod(double first, double second, double expected)
{
// Arrange:
ICalculator calculator = new Calculator();
// Act:
double result = calculator.Add(first, second);
// Assert:
Assert.AreEqual(expected, result);
}
}
}