我在课堂上有一些特定的测试设置。由于它特定于我的测试,我已将其添加到我的测试功能的顶部。清理将添加到测试功能的末尾。测试失败并且未执行清理时的问题。是否有PHPUnit方法来指定特定于我的测试函数的自定义拆解。我查看了PHPUnit手册,它指定了teardownAfterClass和tearDown,但两者都没有解决我的问题。函数teardownAfterClass将在类的末尾只运行一次。函数拆解在每次测试后运行,但如果我的特定测试函数没有执行,我不想进行任何清理。
为我的测试创建自定义拆卸功能的PHPUnit方法是什么?
这是我用来确保特定于测试的清理总是发生的代码,但它很难看,因为它需要将实际测试放在一个单独的函数中并需要try / catch块。是否有一种PHPUnit特定的方式来处理它?类似于函数的dataProvider之类的东西会很棒,无论失败还是成功,都会在测试后执行。
class testClass {
public function test1() {
self::setupSpecificToTest1();
try {
// actual test without cleanup
$this->_test1();
} catch (Exception $e) {
self::cleanupSpecificToTest1();
throw $e;
}
self::cleanupSpecificToTest1();
}
public function test2() {
// some code which does not need any setup or cleanup
}
private function _test1() {
// some test code
}
}
答案 0 :(得分:0)
我试过这个,经过我的测试,它对我有用。
public function tearDown()
{
$this->webDriver->close();
}
答案 1 :(得分:0)
您可以在tearDown
方法中检查特定的测试名称,以相应地改变其行为。获取测试名称可以通过测试类中的$this->getName()
完成。
尝试类似:
...
public function test1() { ... }
public function test2() { ... }
public function tearDown()
{
if ($this->getName() === 'test1')
{
// Do clean up specific to test1
}
parent::tearDown();
}