我正在尝试切换现有的Selenium解决方案以使用NUnit,因为它支持在同一个类中并行化测试。我遇到的问题是它似乎没有使用所选的.runsettings
文件,尽管它是supported by NUnit。这样,我的意思是TestContext.Parameters.Count
始终为0,并且它不会将结果存储在我的.runsettings文件的<ResultDirectory>
节点中指定的路径中。
我查看了文档和对AdapterSettings的引用(其中包含解析.runsettings文件的逻辑),我无法弄清楚为什么我的TestContext.Paramaters
永远不会填充在我的.runsettings
中我在使用NUnit 3.7.1
文件时进行测试。
我创建了一个简单的测试解决方案,就像一个完整性检查和POC一样,它仍然没有填充。
我有
- NUnit3TestAdapter 3.7.0
- VisualStudio Professional 2017
- <?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name ="testParameter1" value="value1" />
<Parameter name ="testParameter2" value="value2" />
</TestRunParameters>
</RunSettings>
我的.runsettings文件是:
using System;
using NUnit.Framework;
namespace ClassLibrary1
{
[TestFixture]
public class UnitTestClass1
{
[Test]
[Parallelizable(ParallelScope.All)]
public void Class1TestMethod1()
{
// Below always returns 0
Console.WriteLine(TestContext.Parameters.Count);
// Below returns null
Console.WriteLine(TestContext.Parameters["testParameter1"]);
}
}
}
我试图在测试中做的所有事情:
TestResultDirectory
我真的可以使用其他一些建议来解决问题。我们使用内置的Visual Studio单元测试工具(以及vstest.console.exe)为我们的测试套件广泛使用.runsettings文件,所以我非常有信心我正确使用它。
更新
我在实际测试解决方案中替换了对Visual Studios测试属性的所有引用,以使用NUnits属性。现在我得到了参数!然而,这让我仍然感到困惑,为什么它不能在我的其他简单解决方案(上面显示的文件)中工作。
我真的只关心我真正的解决方案,但我仍然想了解为什么它不适用于我的虚拟解决方案。
另外 - 我仍然不确定在NUnit中找到if(tipo.compereTo("SUM")==0)
路径的位置。