我正在尝试使用NUnit中的TestCaseSource运行多个测试。但是我想让[SetUp]在需要时运行。
目前,它可以按我希望的方式工作,但感觉并不“正确”。因此,以下是主要的测试用例代码(简化了):
public class ImportTestCases
{
ImportTestCases()
{
TestData.RunTestSetup();
}
public static IEnumerable TestCases
{
get
{
//run the funciton under test...
var results = RunFunctionSubjectToTest(TestData.ImportantVar);
//get multiple results...
var allProperties =new TestCaseData(o).Returns(true)
ExpandNestedProperties(results.AllProperties)
.ToList()
.ConvertAll(o => new TestCaseData(o).Returns(true));
return allProperties;
}
}
}
[TestFixture]
public class ImportTests
{
[TestFixtureSetUp]
public void ImporTestSetup()
{
TestData.RunTestSetup();
}
[Test, TestCaseSource(typeof(ImportTestCases), nameof(ImportTestCases.TestCases))]
public bool PropertyTest(UnitTestHelper.PropInfo info)
{
return info.DoTheyMatch;
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是[SetUp]在ImportTestCases“ TestCases”属性“ get”运行之前没有运行。“ ImportTestCases”的构造函数也未运行。因此,为了确保在引用ImportVar之前已运行“ RunTestSetup”,我必须执行以下操作:
public static class TestData
{
private static …Run Code Online (Sandbox Code Playgroud)