如何重新安排单元测试?

时间:2014-03-27 16:30:41

标签: c# unit-testing

我有VS 2012.所有测试都按字母顺序执行。我怎么能强制执行自己的测试执行顺序?我尝试在主题上搜索StackOverflow和谷歌但没有收到任何结果。

4 个答案:

答案 0 :(得分:2)

编写有效的单元测试有很好的FIRST原则:

  • 快速 - 测试应该非常快速地运行,以便您可以经常运行它们。如果您不经常运行测试,那么您的代码会为您提供反馈延迟。延迟的持续时间显示了您可以编写的代码数,直到您了解到已经破坏了某些内容。
  • 隔离 - 这是您试图违反的内容 - 测试不应相互依赖,并且他们应该有单一的失败原因。如果测试失败,您应该能够说出失败的确切原因,而无需调试它并调查上下文,环境,依赖关系或其他条件。
  • 可重复 - 无论何时运行,测试都应产生相同的结果。否则测试结果是不确定的,这样的测试具有可论证的价值。
  • 自我验证 - 测试结果应该清楚 - 您不应该去研究一些测试输出。如果要检查某些内容,则应通过测试本身来完成。
  • 及时 - 在编写代码之前编写它们,即使用TDD。

因此,如果您的测试依赖于它们运行的​​顺序,那么您的测试有多个失败的原因 - 如果实现不满足要求,它们可能会失败,或者如果实现正确,它可能会失败,但是测试已经执行了顺序错误。这使得测试结果不确定。

答案 1 :(得分:1)

正如@Matt和@Pete所建议的那样,单元测试应该以彼此独立的方式开发。

但是,要回答您的问题,在发布此答案时,没有办法选择序列。请参阅Visual Studio Feature Requests。然而,这是他们的积压。

答案 2 :(得分:1)

我同意其他人的观点,即测试的顺序并不重要。话虽这么说,Visual Studio doe支持有序测试。见How to: Create an Ordered Test

答案 3 :(得分:0)

单元测试的基本原理是每个测试单元是独立的。只要您关注安排,Act和Assert将使您的测试完成。最重要的是,建议使用名为 TestIntialize 的东西,以保持测试的清洁和独立。考虑到这一切,你所寻找的东西不会让你的测试UNIT测试。