Environment.OSVersion 和 Resharper
Environment.OSVersion and Resharper
我为 .NET Framework 应用程序编写的一些 Nunit 测试遇到了一个小问题。
我使用 Visual Studio 2019 (16.11.3) 和 ReSharper 2020.2
我的应用程序检查当前使用的 OS 并对不同的 Windows 版本做不同的事情。这很好用。但是 Nunit 测试总是失败,因为当我使用 ReSharper 测试执行器 运行 时 Environment.OSVersion 检测到错误的 OS 版本。
以下针对 .NET Framework 项目的最小测试 class 如果由 ReSharper 执行则将失败,但如果 Visual Studio 文本执行器 运行 将其执行到 Windows 10 OS.
[TestFixture]
public class TestClass {
[Test]
public void SomeTest()
{
TestContext.WriteLine(Environment.OSVersion);
Assert.AreEqual(10, Environment.OSVersion.Version.Major);
}
}
VS 输出 Microsoft Windows NT 10.0.19042.0
ReSharper 输出 Microsoft Windows NT 6.2.9200.0
有人知道是否有隐藏选项或设置可以解释问题吗?
这听起来像是与 https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/5.0/environment-osversion-returns-correct-version 相关的内容,但我的应用程序明确测试了兼容模式并将其注册为错误。
有人遇到同样问题的简短参考:
在联系 ReSharper 支持后,这似乎发生了,因为版本 2020.2 中的 ReSharper 测试运行器的 AppManifest.xml 和受支持的列表 OS 在那里。
根据支持工程师的说法,它应该已经在 2021.1 版本中解决了,但我无法验证这一点,因为我还没有更新。
我为 .NET Framework 应用程序编写的一些 Nunit 测试遇到了一个小问题。 我使用 Visual Studio 2019 (16.11.3) 和 ReSharper 2020.2
我的应用程序检查当前使用的 OS 并对不同的 Windows 版本做不同的事情。这很好用。但是 Nunit 测试总是失败,因为当我使用 ReSharper 测试执行器 运行 时 Environment.OSVersion 检测到错误的 OS 版本。
以下针对 .NET Framework 项目的最小测试 class 如果由 ReSharper 执行则将失败,但如果 Visual Studio 文本执行器 运行 将其执行到 Windows 10 OS.
[TestFixture]
public class TestClass {
[Test]
public void SomeTest()
{
TestContext.WriteLine(Environment.OSVersion);
Assert.AreEqual(10, Environment.OSVersion.Version.Major);
}
}
VS 输出 Microsoft Windows NT 10.0.19042.0
ReSharper 输出 Microsoft Windows NT 6.2.9200.0
有人知道是否有隐藏选项或设置可以解释问题吗?
这听起来像是与 https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/5.0/environment-osversion-returns-correct-version 相关的内容,但我的应用程序明确测试了兼容模式并将其注册为错误。
有人遇到同样问题的简短参考:
在联系 ReSharper 支持后,这似乎发生了,因为版本 2020.2 中的 ReSharper 测试运行器的 AppManifest.xml 和受支持的列表 OS 在那里。
根据支持工程师的说法,它应该已经在 2021.1 版本中解决了,但我无法验证这一点,因为我还没有更新。