gpt4 book ai didi

dart - tree-shaking 的力量能否允许测试存在于库中但对生产影响为零?

转载 作者:行者123 更新时间:2023-12-01 12:45:17 26 4
gpt4 key购买 nike

我对测试库私有(private)类/函数的简单方法很感兴趣。下面有两个文件用于测试文件 curves_attribution.dart 中的代码。后者 (2) 是 http://pub.dartlang.org/doc/package-layout.html 中描述的建议方法。 .缺点是您无法访问私有(private)图书馆范围内的项目。测试库范围内项目的一个简单解决方案是在库本身中包含测试。这意味着必须将 (1) 所需的任何包含添加到库 finance.dart,但仅出于测试目的才需要它们。因此,例如,将导入 unittest.dart。

我已经通过使用 http://pub.dartlang.org/packages/hop 成功访问测试来尝试此设置.由于 tree-shaking,期望能够发布包含 0 个测试代码的应用是否现实?

如果没有关于测试库私有(private)代码的其他方法的建议,欢迎。如果由于其他原因这是个坏主意,请解释。

|-- lib
| |-- finance.dart
| |-- src
| | |-- finance
| | | |-- curves_attribution.dart
| | | |-- test_curves_attribution.dart (1)
| |-- test
| | |-- test_curves_attribution_public.dart (2)

最佳答案

除非您使用镜像,否则您可以期望 tree-shaker 消除所有测试代码。不过,这在一定程度上取决于您编写测试代码的方式。

tree-shaking 算法是防弹的,可以排除未使用的静态方法或类。不过,它可能无法删除实例化类的所有未使用的实例成员。

作为可能不是 tree-shaking 的代码示例:

class A {
test() {...} // Actually used in code. Not just for testing.
}
class B { // Class B is used in program.
test() {...} // Only supposed to be used for testing.
}

如果程序包含 o.test(),而编译器不能完全确定 o 是什么,它将同时包含 A.test( )B.test()

关于dart - tree-shaking 的力量能否允许测试存在于库中但对生产影响为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20662879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com