我正在测试一些检查当前操作系统版本的代码,因为dll中的方法只能在Windows 7上运行。为此,使用以下内容
if (Environment.OSVersion.Version >= new Version("6.2"))
//Windows 8
else
//Windows 7
是否有一种简单的单元测试方法或者需要更改代码(包装和注入环境?)
答案 0 :(得分:6)
您可以使用Microsoft Fakes(假设您拥有Visual Studio的Ultimate版本)。
https://msdn.microsoft.com/en-us/library/hh549175.aspx
这将允许您伪造静态方法:)
打开"假货→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);
}
}