에서
들으 당신도 tearDown()
에 어디서나 어설를 사용할 수 있습니다 보인다.
class TearDownTest extends PHPUnit_Framework_TestCase
{
/** */
public function setUp(){
echo "In setUp\n";
//$this->assertTrue(false);
}
/** */
public function tearDown(){
echo "In tearDown\n";
$this->assertTrue(false);
}
/** */
public function assertPreConditions(){
echo "In assertPreConditions\n";
//$this->assertTrue(false);
}
/** */
public function assertPostConditions(){
echo "In assertPostConditions\n";
//$this->assertTrue(false);
}
/**
*/
public function testAdd(){
$this->assertEquals(3, 1+2);
}
}
하지만, 엄지 손가락의 하나의 규칙을 I가있다 : 소프트웨어가 내 인생을 어렵게하는 경우, 어쩌면 내가하고있어이 테스트 케이스 (phpunit testTearDown.php
실행, testTearDown.php로 저장)을 제대로 실패 제공 뭔가 잘못. 당신은 tearDown
코드가 실행 된 후하려는 썼다 : ". 데이터베이스의 모든 테이블 제로의 행 개수가있는 경우 어설"
당신이 당신의 단위 테스트 코드를 확인하려면 같은이 소리 제대로 작성되었습니다 ,이 경우 tearDown이 제대로 작동 했습니까? 실제로 테스트중인 코드와 아무런 관련이 없습니다. phpUnit 어설 션 메커니즘을 사용하면 혼란스럽고 오해의 소지가 있습니다. 위 예제에서 tearDown이 assert하면 testAdd()가 실패했다는 것을 알 수있다. 올바르게 작동하지 않는 tearDown() 코드가 실제로있는 경우이를 대신 말하고 싶습니다.
public function tearDown(){
tidyUpDatabase();
$cnt=selectCount("table1");
assert($cnt==0);
$cnt=selectCount("table2");
assert($cnt==0);
}
왜 당신은이 주장 넣을 수 없습니다 : 당신이 원하는의 tearDown() 함수는 다음과 같이 보일 수 있다면
그래서궁금 : 그래서, 당신의 단위 테스트 코드의 유효성을 확인하는 이유는 PHP의이 주장 사용하지 포스트 조건에 대한 주장을하고 있다면'assertPostConditions'에? 'tearDown'이 데이터베이스 연결을 파괴합니까? 그렇다면,'tearDown'의 시작 부분에 놓으십시오. –