如果FluentAssertions在生产代码中使用? [关闭](Should FluentAs

2019-09-26 05:29发布

我一直在使用FluentAssertions的单元测试,想知道为什么它永远只能在这方面提及。 如果你写的一般故障快速生产代码守卫你会重复一些功能FluentAssertions已经提供的。 一些我能想到的不使用它的原因:

  1. 其重点是是可读的,而不是表现良好。 计数器:这不正是高级语言也做和相关的警告,不能做过早的优化?
  2. 还涉及到性能,还有就是有一些断言代码时,在释放模式编译无法运行没有什么好办法。 计数器:您可能会删除你认为不会发生生产而导致的异常,是很难追查断言。 只要他们不显著影响性能,离开它。
  3. 它的断言并不总是抛出标准异常。 例如, ArgumentNullExceptionArgumentException是无处不在的和预期,但FluentAssertions不知道你在测试参数,并抛出一个通用的异常。

也许这是已知的性能显著影响如此#1和#2是合法的,但你一般也想快速单元测试,所以同样的逻辑可以应用在那里。 任何其他很好的理由不要在生产中使用的代码FluentAssertions?

Answer 1:

流利的断言仅提及单元测试和其他类型的测试,因为测试代码和生产要分开。 当您使用流利断言比如,你不应该被迫依赖于良好断言的测试依赖。

我不能回答,如果流利断言是缓慢的,问题是,如果实在是太慢了 ,并且取决于具体的方案。 单元测试其开销远由可读性和改进的失败消息覆盖。 用热循环中流利断言可以轻易的杀死你的表现。 再次取决于其功能从流利断言被使用。 例如BeEquivalentTo在很大程度上依赖于反思。

Debug.Assert还有另一个但相关的目的。 它声称你的代码的状态,例如,检查不变量 。



文章来源: Should FluentAssertions be used in production code? [closed]