测试套件设置方法是针对每个测试执行一次,还是仅针对所有测试执行一次?

时间:2010-04-29 19:42:36

标签: unit-testing testing junit nunit mstest

我知道每个测试框架的答案可能不同。但对于你知道的人,会发生什么?

4 个答案:

答案 0 :(得分:4)

在NUnit中,你有TestFixtureSetUp只在灯具运行的所有测试之前运行一次,而SetUp在每个测试方法运行之前运行。

答案 1 :(得分:4)

在MSTest中,您有TestInitializeAttribute

在负载测试中运行时,标记为此属性的方法将针对测试中的每个虚拟用户迭代运行一次。如果您需要执行一次适用于整个测试的初始化操作,请使用ClassInitializeAttribute

对于所有类中的所有测试,

AssemblyInitializeAttribute运行一次。

答案 2 :(得分:3)

这自然取决于框架,对于具体答案,您应该查看相关文档。

设置测试方法,或者固定装置很有用,但不应滥用它们。如果单元测试有complex set up methods,你可以说它们更像集成测试,因此应该重构。复杂的测试设置是代码气味。另一方面,明智地使用设置方法可以减少重复并使测试更具可读性和可维护性。

答案 3 :(得分:1)

junit4 中,您可以使用注释标记这两种设置/拆卸方法。以下是摘要:

  • 在每个测试套件之前运行设置 使用@BeforeClass
  • 在每个测试套件后运行拆卸 使用@AfterClass
  • 套件中的每个测试方法之前运行设置使用@Before
  • 在套件中使用@After
  • 后,在每个测试方法之后运行拆除