我有一个最简单的套件,我一直在为PHP中的一些最近的API包装代码编写代码。但每次我运行测试时,它都会运行所有测试两次。
我的主叫代码:
require_once(dirname(__FILE__) . '/simpletest/autorun.php');
require_once('CompanyNameAPI.php');
$test = new TestSuite('API test');
$test->addFile(dirname(__FILE__) . '/tests/authentication_test.php');
if (TextReporter::inCli()) {
exit ($test->run(new TextReporter()) ? 0 : 1);
} else {
$test->run(new HtmlReporter());
}
authentication_test.php如下:
class Test_CallLoop_Authentication extends UnitTestCase {
function test_ClassCreate(){
$class = new CallLoopAPI();
$this->assertIsA($class, CallLoopAPI);
}
//More tests
}
在authentication_test.php中,autorun.php或其他对simpletest的调用也没有。
想法?
答案 0 :(得分:2)
你应该改变你的调用代码:
require_once(dirname(__FILE__) . '/simpletest/autorun.php');
require_once('CompanyNameAPI.php');
$test = new TestSuite('API test');
$test->addFile(dirname(__FILE__) . '/tests/authentication_test.php');
autorun.php文件自动执行你的测试隐式调用run()方法,当你调用run()方法时,你再次执行测试。
答案 1 :(得分:0)
从simpletests文档中,您应该使用静态方法prefer(REPORTER)
<?php
require_once('show_passes.php');
require_once('simpletest/simpletest.php');
SimpleTest::prefer(new ShowPasses());
require_once('simpletest/autorun.php');
class AllTests extends TestSuite {
function __construct() {
parent::__construct('All tests');
$this->addFile(dirname(__FILE__).'/log_test.php');
$this->addFile(dirname(__FILE__).'/clock_test.php');
}
}
?>