Uczę się używać testu jednostkowego, tworzę projekt, dodaję odniesienie do zbioru Xunit. I następujące kody:dlaczego xunit nie pozwala przetestować metody z parametrami?
namespace UnitTestProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[Fact]
private void test(int number1, string number2)
{
int result = number1 + Convert.ToInt32(number2);
Assert.IsType(Type.GetType("Int32"), result);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Kiedy wykonać test za pomocą narzędzia xUnit gui, to powiedział:
UnitTestProject.Form1.test: System.InvalidOperationException: Fakt metoda UnitTestProject.Form1.test nie może mają parametry stos śladowych: 於 Xunit.Sdk.FactCommand.Execute (Object TestClass)
Xunit.Sdk.FixtureCommand.Execute (Object TestClass)
Xunit.Sdk.BeforeAfterCommand.Execute (Object TestClass)
Xunit.Sdk.LifetimeCommand.Execute (Object TestClass)
Xunit.Sdk.ExceptionAndOutputCaptureCommand.Execute (Object TestClass)
Tak, jak mogę przetestować metody/funkcji z parametrami?
dziękuję, ale czy mogę ustawić InlineData w losowej wartości? Lub lepiej powiedzieć, InlineData akceptować metodę/zmienną inline? – Cheung
Możesz dlaczego nie. Zobacz brudny przykład poniżej. – Alina
@Shiba ogólnie nie powinieneś używać losowych wartości w swoich testach. W twojej przykładowej metodzie, jeśli jedna losowa liczba nie powiedzie się, nie będziesz miał pojęcia, jakie liczby były przyczyną problemu. Postaraj się, aby twoje testy były deterministyczne i wykorzystaj szereg oczekiwanych, nieoczekiwanych i ekstremalnych danych wejściowych. – DaveShaw