gpt4 book ai didi

c# - 如何对包含 Environment.OSVersion.Version 的代码进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:45 24 4
gpt4 key购买 nike

我正在对一些检查当前操作系统版本的代码进行单元测试,因为 dll 中的方法只能在 Windows 7 上运行。为此,使用了以下内容

if (Environment.OSVersion.Version >= new Version("6.2"))
//Windows 8
else
//Windows 7

是否有一种简单的方法对此进行单元测试,或者是否需要更改代码(包装并注入(inject)环境?)

最佳答案

您可以使用 Microsoft Fakes(假设您拥有 Visual Studio 的终极版)。

https://msdn.microsoft.com/en-us/library/hh549175.aspx

这将允许您伪造静态方法:)

为系统添加一个 Fakes 程序集: Fakes solution explorer

打开“Fakes → mscorlib.fakes”并将其编辑为如下所示:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Environment"/>
</ShimGeneration>
</Fakes>

执行构建。

您现在可以编写单元测试了:

[TestMethod]
public void TestMethod1()
{
using (ShimsContext.Create())
{
System.Fakes.ShimEnvironment.OSVersionGet = () => new OperatingSystem(PlatformID.Win32Windows, new Version("99.99"));

Assert.AreEqual(Environment.OSVersion.Version.Major, 99);
}
}

关于c# - 如何对包含 Environment.OSVersion.Version 的代码进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34795234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com