关于 PHP 代码的 Atoum 测试用例,我如何对使用 require_once 的 class 进行单元测试?
Concerning test cases with Atoum for PHP code , how can I unit test a class which uses require_once?
我可以使用 Atoum 对 class 进行单元测试,如下所示:
<?php
namespace vendor2\project2;
class helloWorld2
{
public function say()
{
return 'Hello World!';
}
public function add($a,$b)
{
return ($a+$b);
//return 'Hello World!';
}
}
?>
一切都很好,我完成了几个测试用例
但是当我将 require_once 添加到我想要测试的 class 时,Atoum 无法测试 class:
<?php
namespace vendor2\project2;
$ServerRoot = realpath(__DIR__. '/..');
require_once $ServerRoot.'/db/dbTables/M4_Warrior.php';
class helloWorld2
{
public function say()
{
return 'Hello World!';
}
public function add($a,$b)
{
return ($a+$b);
//return 'Hello World!';
}
}
?>
当我用 require_once 注释行时,一切都很好
为什么?
测试php文件也如下:
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace vendor2\project2\tests\units;
$ServerRoot = realpath(__DIR__. '/../..');
require_once $ServerRoot.'/HandleCommands/helloWorld2.php';
use atoum;
/**
* Test class for helloWorld.
*
* @author Vh80705
*/
class helloWorld2 extends atoum {
// put your code here
public function test1() {
$true = true;
$false = false;
$this
->boolean($true)
->isFalse(); // fails
}
public function test2() {
$true = true;
$false = false;
$this
->boolean($false)
->isFalse(); // succeed
}
public function test3 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->string($this->testedInstance->say())
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo('Hi atoum !')
;
}
public function test4 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->string($this->testedInstance->say())
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo('Hello World!')
;
}
public function test5 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->integer($this->testedInstance->add(1,2))
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo(3)
;
}
public function test6 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->integer($this->testedInstance->add(1,2))
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo(4)
;
}
public function testSkipped() {
$this->skip('This test was skipped');
}
}
奇怪,但这是真的!
Atoum 关心 ?> 在 PHP 个文件的末尾
?>
后面应该什么都没有
连换行
我将所有 PHP 文件中的所有 ?> 替换为 space,问题解决了
我可以使用 Atoum 对 class 进行单元测试,如下所示:
<?php
namespace vendor2\project2;
class helloWorld2
{
public function say()
{
return 'Hello World!';
}
public function add($a,$b)
{
return ($a+$b);
//return 'Hello World!';
}
}
?>
一切都很好,我完成了几个测试用例
但是当我将 require_once 添加到我想要测试的 class 时,Atoum 无法测试 class:
<?php
namespace vendor2\project2;
$ServerRoot = realpath(__DIR__. '/..');
require_once $ServerRoot.'/db/dbTables/M4_Warrior.php';
class helloWorld2
{
public function say()
{
return 'Hello World!';
}
public function add($a,$b)
{
return ($a+$b);
//return 'Hello World!';
}
}
?>
当我用 require_once 注释行时,一切都很好
为什么?
测试php文件也如下:
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace vendor2\project2\tests\units;
$ServerRoot = realpath(__DIR__. '/../..');
require_once $ServerRoot.'/HandleCommands/helloWorld2.php';
use atoum;
/**
* Test class for helloWorld.
*
* @author Vh80705
*/
class helloWorld2 extends atoum {
// put your code here
public function test1() {
$true = true;
$false = false;
$this
->boolean($true)
->isFalse(); // fails
}
public function test2() {
$true = true;
$false = false;
$this
->boolean($false)
->isFalse(); // succeed
}
public function test3 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->string($this->testedInstance->say())
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo('Hi atoum !')
;
}
public function test4 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->string($this->testedInstance->say())
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo('Hello World!')
;
}
public function test5 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->integer($this->testedInstance->add(1,2))
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo(3)
;
}
public function test6 ()
{
$this
// creation of a new instance of the tested class
->given($this->newTestedInstance)
->then
// we test that the getHiAtoum method returns
// a string...
->integer($this->testedInstance->add(1,2))
// ... and that this string is the one we want,
// namely 'Hi atoum !'
->isEqualTo(4)
;
}
public function testSkipped() {
$this->skip('This test was skipped');
}
}
奇怪,但这是真的!
Atoum 关心 ?> 在 PHP 个文件的末尾
?>
后面应该什么都没有
连换行
我将所有 PHP 文件中的所有 ?> 替换为 space,问题解决了