不可测试的基类扩展PHPUnit_Framework_TestCase
2022-08-30 16:37:25
总结
如何创建一个扩展PHPUnit_Framework_TestCase的基类,并将其用于对实际测试用例进行子类化,而无需 PHPUnit 测试基类本身?
进一步解释
我有一系列相关的测试用例,我为它们创建了一个基类,其中包含一些由所有测试用例继承的常见测试:
BaseClass_TestCase.php:
class BaseClass_TestCase extends PHPUnit_Framework_TestCase {
function test_common() {
// Test that should be run for all derived test cases
}
}
MyTestCase1Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase1 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase1
}
}
MyTestCase2Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase2 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase2
}
}
我的问题是,当我尝试运行文件夹中的所有测试时,它失败了(没有输出)。
尝试调试时,我发现问题在于基类本身就是PHPUnit_Framework_TestCase的子类,因此PHPUnit也将尝试运行其测试。(在那之前,我天真地认为只有实际测试文件中定义的类 - 以Test结尾的文件名.php - 才会被测试。
由于我的具体实现中的细节,将基类作为测试用例作为上下文运行不起作用。
如何避免测试基类,而只测试派生类?