如何根据另一个测试的结果进行测试

时间:2012-02-06 08:29:23

标签: php phpunit

我有一个AuthenticationService,提供performLogin,performSignup等方法。在测试performSignup方法时,我使用了2个测试:

  • testSuccessfulSignup()
  • testSignupAmbigiousIdentity()

第一个测试创建一个新用户帐户,第二个测试尝试创建具有相同身份的用户(例如,相同的电子邮件地址)。这导致testSignupAmbigiousIdentity依赖于testSuccessfulSignup的先前成功结果,我认为这有点笨拙,特别是如果对测试进行简单的重新排序(例如按字母顺序排列)可能会搞砸测试过程。

是否有关于如何处理依赖以前测试的测试的最佳实践?

TL; DR如何使测试方法依赖于使用PHPUnit(3.6)成功输出另一个测试方法。

3 个答案:

答案 0 :(得分:2)

您可以使用@depends annotation

话虽如此,重组测试以使用灯具设置一个已知良好状态进行测试而不是在其他无关测试中动态设置该状态可能更好。

答案 1 :(得分:1)

您编写的任何测试都应该能够独立运行,而不依赖于其他测试。您的失败测试结果不仅指向错误的测试,还可能存在您只想运行部分测试的情况(仅在考虑失败时)。

您应该创建一个setUp,在您的测试表中创建一个静态条目,以针对testSignupAmbigiousIdentity方法进行测试。

答案 2 :(得分:0)

查找(或者如果您使用向导)只需查找设置和拆卸。 Idea是每个测试类都有一个方法,它在执行任何测试方法之前运行,另一个在所有选定的测试运行之后运行。