Xamarin:使用Moq / NUnit和MockContext测试Android应用程序?

时间:2013-07-02 09:55:50

标签: c# android nunit xamarin.android moq

我正在尝试为一些现有代码设置一些测试,并且需要能够模拟ViewFlipper.FindViewById之类的内容。

到目前为止,我必须为ViewFlipper创建一个可模拟的包装器。现在我遇到的问题是我想要返回一个模拟的视图。模拟的视图需要将一个Context传递给它的ctor。我在MockableContext命名空间中找到了Java.Test类,但它似乎不喜欢被新建?我得到null ref例外?

我应该能够以这种方式使用这个课吗?还有另一种方法吗?简单地创建新的Mock<Context>也不起作用:/

2 个答案:

答案 0 :(得分:0)

您是否尝试使用我认为等同于Android.App.Application.Context属性的Android.Content.Context.ApplicationContext属性,除了它是静态的并且随处可用。

我在这个Stack Overflow答案中遇到了它:

https://stackoverflow.com/a/19248475/1071320

答案 1 :(得分:0)

问题是由于测试单元作为.NET程序集运行,在Android的“上下文”(双关语)中根本不存在。

检查Android.App.Application.Context将导致相同的异常。

Android.Test.Mock.MockContext是Java代码的包装器,在运行单元测试时,程序集在Windows环境中运行,而不是在Java环境中运行。

能够对Xamarin视图进行单元测试会很好......但我不确定是否可以模拟所需的Android上下文。