【问题标题】:How to test shared code in Xamarin如何在 Xamarin 中测试共享代码
【发布时间】:2015-04-21 19:56:22
【问题描述】:

我有一个包含 3 个项目的 Xamarin 解决方案:

  • 安卓
  • iOS
  • 共享

Shared 是一个包含所有共享逻辑的共享项目。例如。使用 sqlite-net 访问数据库,使用 restsharp 进行调用。

我想测试 Shared 中的代码。

我创建了一个 NUnit 库项目并在其中创建了一个测试。

现在项目无法编译,因为它找不到共享项目所需的 dll。

Shared 不直接引用这些 dll。例如,Android 项目引用了 android 版本的 sqlitenet.dll。

如何测试共享代码?

【问题讨论】:

    标签: c# unit-testing xamarin


    【解决方案1】:

    共享项目只是链接文件的容器,或者换句话说,共享项目不直接有任何引用,而是获取引用它的项目所具有的任何引用。

    如果您有一个引用共享项目的 iOS 和 Android 项目,要正确地对所有可能的代码路径进行单元测试,您将需要引用共享项目并引用共享项目需要的任何内容的 android 和 iOS 版本的单元测试项目,例如 SqlLite 并定义任何需要的编译常量。

    如果 iOS 和 Android 单元测试之间的代码部分相同(很可能是),您也可以使用共享项目来共享该代码。

    【讨论】:

    • 所以共享测试项目应该是一个“普通”的共享项目,对吧?并且 ios 和 android 测试项目各自使用不同的测试库。我可以在共享测试中使用 nunit(属性)和 moq 吗?
    • 是的,共享项目只是链接文件的容器。它本身不是一个已编译的实体,其中的所有文件都被编译到任何引用共享项目的内容中。您必须引用正确的单元测试库; nunitLite 可用。
    • developer.xamarin.com/guides/ios/… 对于 iOS 来说,模拟可能有点困难,因为像 Moq 这样的框架所需的 JIT 在物理 iOS 设备上不可用。
    • 我似乎无法从共享测试项目中引用共享项目中的类。这两个项目都是共享项目。我创建了一个 android 测试项目并添加了对共享和共享测试项目的引用。当我尝试使用共享测试中的共享类时,Xamarin 提供让共享测试引用 android(不是 android-tests)项目。
    • 我不确定我是否理解这个问题。共享项目死亡不包含任何引用。如果在向共享项目添加调用时完全限定命名空间,它是否有效?您能否截取测试项目的参考资料?
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2021-05-15
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多