【发布时间】:2016-05-13 13:43:28
【问题描述】:
假设我有一个跨平台的移动应用。它构建在 Xamarin 框架中,其架构如下所示(有些简化):
- iOS 项目
- Android 项目
- 包含逻辑的 PCL(共享层)
共享层包含所有业务逻辑,其他两个项目包含平台特定的 ui 实现等
我想使用单元测试来测试共享层。为此,我为这两个操作系统添加了两个测试运行程序,例如用于 iOS 的this one。两个测试运行器都使用 NUnit 框架。
单元测试位于一个单独的 PCL 中,该 PCL 也使用 NUnit。
现在我的问题是:有没有办法让两个跑步者都使用这个 PCL 的测试,以便将测试保存在一个地方?
我在网上查了一段时间,但没有找到太多相关信息。
下面我试图说明我想要实现的目标:
共享项目中包含需要测试的逻辑的类:
public class Logic
{
// The method to test
public int add(foo, bar)
{
return (foo + bar);
}
}
包含测试的 PCL:
[TestFixture]
public class SharedTest
{
public void RunAll()
{
// Some magic code that runs all the below tests..
}
[Test]
Add() {
logic = new Logic();
Assert.AreEqual(logic.add(1, 1), 2);
}
}
iOS runner 类:
[TestFixture]
public class LogicTest
{
SharedTest st = new SharedTest();
[Test]
st.RunAll();
}
旁注:我知道可以只从 PCL 运行测试并在必要时模拟一些特定于平台的功能,但我的老板更喜欢使用没有模拟的运行器。
这个问题的目的只是想知道是否可以在没有两组相同测试的情况下使用特定于平台的运行器。
另外,如果你有不同的方式,我愿意接受。
提前致谢!
【问题讨论】:
标签: android ios unit-testing xamarin nunit