我正在尝试将单元测试包含在我的Xamarin PCL项目中。
这就是我基本上所做的:
登录页面类:
public bool isUserRemembered()
{
return DependencyService.Get<IUserDefaults>().getUserRemembered();
}
public void setRememberUser(bool check)
{
DependencyService.Get<IUserDefaults>().setUserRemembered(check);
}
UnitTest类(iOS):
[Test]
public void RememberKeyTrueTest()
{
LoginPage page = new LoginPage();
bool isRemember = true;
page.setRememberUser(isRemember);
bool value = page.isUserRemembered();
if (value)
Pass();
else
Fail();
}
我在这一行得到Null Reference Exception:DependencyService.Get<IUserDefaults>().setUserRemembered(check)
。
依赖服务是否适用于单元测试?或者有任何工作吗?
答案 0 :(得分:1)
当我在代码中使用依赖注入时,我使用IoC(Inversion Of Control)来处理生产代码中依赖项的创建,并在单元测试中手动创建依赖项。
我的主要原因是它是明确的。通常我会使用Mocking框架来创建假实例,所以我不想要额外的复杂性。
对您测试的代码的建议,您已将依赖项交换到您的类以依赖您的DependencyService。我并不是说不使用DependencyService,但您可以将依赖项传递给类的构造函数。然后你的测试可以传入一个假实例,生产代码将使用DependencyService来获取IUserDefaults并将其传入。这将使你的类更容易测试。