【发布时间】:2017-01-12 05:19:20
【问题描述】:
我有一些特定于我在课堂上的测试的设置。由于它特定于我的测试,因此我已将其添加到我的测试函数的顶部。清理被添加到测试函数的末尾。测试失败且清理未执行时的问题。是否有一种 PHPUnit 方法来指定特定于我的测试函数的自定义拆解。我查看了指定 teardownAfterClass 和 tearDown 的 PHPUnit 手册,但两者都没有解决我的问题。函数 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
}
}
【问题讨论】:
-
对于每个测试的特定行为,您最好在方法本身中处理它,或者只是手动调用清理方法。
-
函数末尾手动调用cleanup方法的问题是异常/测试失败时无法调用。
-
我建议您发布一些测试代码,因为可能有更好的方法来处理您的情况。
-
我添加了一个示例代码来更好地解释问题
标签: phpunit