运行 方法并在 Nunit 中的每个测试之前将其存储一个变量
run method and store it one variable before each test in Nunit
我需要在每次测试前运行一个方法就像在 TestNg 中方法之前的工作方式一样。
我期望的是我需要获取测试名称并找到相关的测试数据并将其存储在变量中。目前,我已将该步骤包含在测试中。不过如果每次测试都少一行代码就好了
在 Nunit 中可以吗?
Setup 属性用于提供一组通用函数,这些函数在 每个测试 方法被调用之前执行。您还可以从 TestContext.CurrentContext.Test.MethodName 中获取方法名称。 Test 上还有其他属性,例如 Arguments 或 FullName,具体取决于您的需要。
[SetUp]
public void Setup()
{
var testName = TestContext.CurrentContext.Test.MethodName;
TestContext.WriteLine($"SetUp for {testName}");
}
或者,您还可以使用 TestCaseData class 为参数化测试提供扩展测试用例信息。
public class DemoClass {
[TestCaseSource(typeof(MyDataClass), nameof(MyDataClass.DivideTestCases))]
public int DivideTest(int n, int d)
{
return n / d;
}
[TestCaseSource(typeof(MyDataClass), nameof(MyDataClass.AddTestCases))]
public int AddTest(int a, int b)
{
return a + b;
}
}
public class MyDataClass
{
public static IEnumerable DivideTestCases
{
get
{
yield return new TestCaseData(12, 3).Returns(4);
yield return new TestCaseData(12, 2).Returns(6);
yield return new TestCaseData(12, 4).Returns(3);
}
}
public static IEnumerable AddTestCases
{
get
{
yield return new TestCaseData(10, 15).Returns(25);
yield return new TestCaseData(12, 10).Returns(22);
yield return new TestCaseData(14, 5).Returns(19);
}
}
}
我需要在每次测试前运行一个方法就像在 TestNg 中方法之前的工作方式一样。
我期望的是我需要获取测试名称并找到相关的测试数据并将其存储在变量中。目前,我已将该步骤包含在测试中。不过如果每次测试都少一行代码就好了
在 Nunit 中可以吗?
Setup 属性用于提供一组通用函数,这些函数在 每个测试 方法被调用之前执行。您还可以从 TestContext.CurrentContext.Test.MethodName 中获取方法名称。 Test 上还有其他属性,例如 Arguments 或 FullName,具体取决于您的需要。
[SetUp]
public void Setup()
{
var testName = TestContext.CurrentContext.Test.MethodName;
TestContext.WriteLine($"SetUp for {testName}");
}
或者,您还可以使用 TestCaseData class 为参数化测试提供扩展测试用例信息。
public class DemoClass {
[TestCaseSource(typeof(MyDataClass), nameof(MyDataClass.DivideTestCases))]
public int DivideTest(int n, int d)
{
return n / d;
}
[TestCaseSource(typeof(MyDataClass), nameof(MyDataClass.AddTestCases))]
public int AddTest(int a, int b)
{
return a + b;
}
}
public class MyDataClass
{
public static IEnumerable DivideTestCases
{
get
{
yield return new TestCaseData(12, 3).Returns(4);
yield return new TestCaseData(12, 2).Returns(6);
yield return new TestCaseData(12, 4).Returns(3);
}
}
public static IEnumerable AddTestCases
{
get
{
yield return new TestCaseData(10, 15).Returns(25);
yield return new TestCaseData(12, 10).Returns(22);
yield return new TestCaseData(14, 5).Returns(19);
}
}
}