NUnit - 在 SetUpFixture 之前执行的 TestFixtureSource
NUnit - TestFixtureSource executed before SetUpFixture
我有一个 setupfixture 会更新一些变量。
[SetUpFixture]
public class TestSetUp
{
[OneTimeSetUp]
public void Setup()
{
var GlobalVar.MSIPath = Path.GetDirectoryName(Directory.GetCurrentDirectory());
}
}
我有一个方法作为 TestFxtureSource 的一部分,它使用由 SetUpFixture 更新的变量。
[TestFixture, TestFixtureSource(typeof(GlobalVar), nameof(GlobalVar.ExtractMSIFiles))]
public class Tests
{
}
public static string[] ExtractMSIFiles()
{
GlobalVar.MSIFiles = Directory.GetFiles(GlobalVar.MSIPath, "*.msi", SearchOption.TopDirectoryOnly); //-----> Error here
}
所有 类 都在同一个命名空间下。
但我看到错误:
OneTimeSetUp: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
----> System.ArgumentException : The path is empty. (Parameter 'path')
当我调试它时,我看到 TestFixtureSource 在 SetUPFixture 之前执行,因此变量 MSIPath 没有更新。
但是我的要求是需要先执行SetUPFixture,再执行TestFixtureSource。我在这里错过了什么?
这是事件的顺序...
测试发现...
你的测试用例源代码被执行,它按顺序调用静态方法ExtractMSIFiles并设置GlobalVar.MSIFiles
ExtractMSIFiles
引用`GlobalVar.MSIPath,尚未设置。
测试执行...
- 您的
SetUpFixture
首先运行。 OneTimeSetupMethod 初始化 GlobalVar.MSIPath
...但为时已晚!
我认为最简单的修复方法是将 MSIPath 的初始化移动到 ExtractMSIFiles
。
我有一个 setupfixture 会更新一些变量。
[SetUpFixture]
public class TestSetUp
{
[OneTimeSetUp]
public void Setup()
{
var GlobalVar.MSIPath = Path.GetDirectoryName(Directory.GetCurrentDirectory());
}
}
我有一个方法作为 TestFxtureSource 的一部分,它使用由 SetUpFixture 更新的变量。
[TestFixture, TestFixtureSource(typeof(GlobalVar), nameof(GlobalVar.ExtractMSIFiles))]
public class Tests
{
}
public static string[] ExtractMSIFiles()
{
GlobalVar.MSIFiles = Directory.GetFiles(GlobalVar.MSIPath, "*.msi", SearchOption.TopDirectoryOnly); //-----> Error here
}
所有 类 都在同一个命名空间下。
但我看到错误:
OneTimeSetUp: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
----> System.ArgumentException : The path is empty. (Parameter 'path')
当我调试它时,我看到 TestFixtureSource 在 SetUPFixture 之前执行,因此变量 MSIPath 没有更新。 但是我的要求是需要先执行SetUPFixture,再执行TestFixtureSource。我在这里错过了什么?
这是事件的顺序...
测试发现...
你的测试用例源代码被执行,它按顺序调用静态方法ExtractMSIFiles并设置
GlobalVar.MSIFiles
ExtractMSIFiles
引用`GlobalVar.MSIPath,尚未设置。
测试执行...
- 您的
SetUpFixture
首先运行。 OneTimeSetupMethod 初始化GlobalVar.MSIPath
...但为时已晚!
我认为最简单的修复方法是将 MSIPath 的初始化移动到 ExtractMSIFiles
。