我正在学习使用单元测试,我创建一个项目,添加xunit参考.以下代码:
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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用xunit gui工具运行测试时,它说:
UnitTestProject.Form1.test:System.InvalidOperationException:事实方法UnitTestProject.Form1.test不能有参数Stack Trace:于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)
那么,我如何用参数测试方法/功能呢?
小智 22
你也可以用[Theory]而不是[Fact].它允许您使用不同的参数创建测试方法.例如
[Theory]
[InlineData(1, "22")]
[InlineData(-1, "23")]
[InlineData(0, "-25")]
public void test(int number1, string number2)
{
int result = number1 + Convert.ToInt32(number2);
Assert.IsType(Type.GetType("Int32"), result);
}
Run Code Online (Sandbox Code Playgroud)
ps使用xUnit,最好将测试方法公之于众.
小智 14
关于测试中的随机值和内联方法/变量.此代码为您的测试生成100个随机int/string对.
[Theory]
[PropertyData("GetTestData")]
public void test(int number1, string number2)
{
int result = number1 + Convert.ToInt32(number2);
var expectedType = Type.GetType("System.Int32");
Assert.IsType(expectedType, result);
}
public static IEnumerable<object[]> GetTestData
{
get { return Enumerable.Repeat(0, 100).Select(x => GenerateTestData()); }
}
private static object[] GenerateTestData()
{
var rand = new Random(0);
return new object[] {rand.Next(0,100), rand.Next(0,100).ToString()};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7361 次 |
| 最近记录: |