【问题标题】:How can you unit test lib/src files in Dart?如何在 Dart 中对 lib/src 文件进行单元测试?
【发布时间】:2014-10-02 22:07:58
【问题描述】:

我的 Dart 包目前按以下方式布局:

lib/
  mypackage.dart
  src/
    mypackage_util.dart
test/
  mypackage_test.dart

mypackage.dart里面,我使用partpart of导入策略来使用 mypackage_util.dart in mypackage.dart, as recommended by the Pub Layout conventions.

在测试方面,我从Seth Ladd's example of using unittest那里得到灵感, 这表明他为他的测试创建了一个新库,这对我来说很有意义。

不幸的是,这导致无法将mypackage_util.dart 导入到 mypackage_test.dart,这意味着我无法测试来自的类或函数 mypackage_util.dart,或 src/ 中的任何内容。

我想象的解决方案是;

  1. 使 mypackage_test.dart 成为主库的一部分,但这似乎使 单独运行测试代码是不可能的。

  2. src/中取出mypackage_util.dart,但这似乎暗示你 永远不能对包中的src/ 代码进行单元测试,这看起来很愚蠢并且暴露了 我不想写的代码。

我应该采用上述方法之一,还是我遗漏了什么?


更新:

上述情况是由于库导入冲突引起的(有关库冲突的解决方案,请参阅Chapter 2. Dart Tour's Libraries and Visibility section)。 See comments below.

【问题讨论】:

    标签: unit-testing dart


    【解决方案1】:

    如果lib/mypackage.dart 声明库并使用part/part of 包含lib/src/mypackage_util.dart,您只需在测试中包含lib/mypackage.dart - 或者您的问题是您想要测试包含在lib/src/mypackage_util.dart 中的私有类/函数?

    【讨论】:

    • 不幸的是,包含lib/mypackage.dart 不会向测试人员公开lib/src/mypackage_util.dart 中的类。我收到 type 'Blah' is not loaded 错误。我不相信lib/src/mypackage_util.dart 中的东西是“私有的”,除非它们不能直接导入。
    • 代码(类函数)是在主库文件中还是在部件中都没有关系。在 Dart 中,以下划线开头的标识符是私有的。如果这不起作用,则说明您的代码/设置有问题。您能否添加文件的内容(mypackage.dart、mypackage_util.dart、mypackage_test.dart)一个允许重现您的问题的最小示例。
    • 您构建简单示例的建议向我表明您是对的。我的测试人员应该可以访问lib/src 中的内容,所以这是我的代码结构或其他方面的问题。谢谢!
    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2014-02-23
    • 2013-05-22
    • 2011-07-27
    • 2012-10-22
    • 2012-06-25
    相关资源
    最近更新 更多