- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在对一些检查当前操作系统版本的代码进行单元测试,因为 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 → 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/
我正在创建一个通用的 Windows 应用程序(Phone 和 metro),我需要访问操作系统的友好名称(例如 Windows Phone 8.1)。 Internet 上的所有资源都指向 Envi
这个问题在这里已经有了答案: Detect Windows version in .NET (18 个答案) 关闭 6 年前。 确定使用 System.Environment.OSVersion 命
使用 windows 10,从 windows 8 升级 => 8.1 => 10 当我使用此代码时。 OperatingSystem os = System.Environment.OSVersio
我当前正在尝试编译这个简单的代码: #include int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &a
我正在对一些检查当前操作系统版本的代码进行单元测试,因为 dll 中的方法只能在 Windows 7 上运行。为此,使用了以下内容 if (Environment.OSVersion.Version
当调用 Windows 10 版本时: Environment.OSVersion.ToString() 返回这个 Windows 8 和 8.1 版本返回 6.2 而不是 6.3?! 我正在使用 W
我打算编写代码来确定操作系统是否为 Windows XP,因此我可以设置 LOCALAPPDATA 环境变量来解决大量使用 ExpandEnvironmentVariables() 的整个代码负载。
我必须获得我的 OSVersion 系统(版本应该是 Windows8 )的 NT 6.2 才能在 C++ 应用程序中使用。我尝试使用 GetVersion 函数调用。但它返回了一个原始值,如 602
在尝试查看系统上的 gcc 版本时,我收到以下消息 gcc --version gcc: warning: couldn’t understand kern.osversion ‘14.5.0 gcc
resources | where type == "microsoft.compute/virtualmachinescalesets" | extend extensions = proper
我一直在使用 Win32::GetOSVersion() perl 函数来获取目标的操作系统版本。但是,此 API 调用仅支持 Windows Server 2012。 http://search.c
在我的 Silverlight Windows Phone 7/8 项目中,我总是使用这些方法/类来获取有关用户手机的信息: Microsoft.Phone.Info.DeviceStatus.Dev
System.Environment.OSVersion 似乎不是 .net core 5.0 (dnxcore50) 的一部分。 我正在尝试确定用户使用的是哪个操作系统,因此当他们将文件保存到我知道
当我跑 brew -- config我得到 HOMEBREW_VERSION: 0.9.5 ORIGIN: https://github.com/Homebrew/homebrew HEAD: bc0
标题基本上说明了一切。我需要确定 Windows Service Pack 编号(以数字形式)和 Environment.OSVersion.ServicePack (基本上只返回 OSVERSION
我使用 RVM 安装 Ruby-2.1.5 并再次运行 bundle。现在 pg gem 不会安装,我得到这个错误: gem install pg -v '0.17.1' -- --with-pg-c
我安装了 OS X Yosemite,现在我遇到了 gcc 4.9.1 编译器的大问题。我希望有人可以帮助我。 我尝试编译我的程序并收到警告消息: gcc: warning: couldn’t und
我是一名优秀的程序员,十分优秀!