PHPUnit выполнит тесты в точном порядке, в котором они написаны в вашем классе *_TestCase
.
Каждый из этих тестов должен иметь возможность работать изолированно и не зависеть от каких-либо других тестов, выполненных доit.
Если у вас есть проблемы с тестированием базы данных, я бы предложил использовать что-то вроде этого:
class MyTest extends PHPUnit_Framework_TestCase {
public function setUp() {
// REPLACE INTO testDb (ID, NAME, VALUE) VALUES (1001000, 'testing', 'value')
$this->db = $db_connection;
}
public function tearDown() {
// DELETE FROM testDb WHERE ID > 10010000 // or something like this
}
public function testSelect() {
$this->assertSame("value", $this->db->getId(100100));
}
/**
* @depends testSelect
*/
public function testInsert() {
$this->db->insertById(1001111, "mytest", "myvalue");
$this->db->getId(1001111);
}
/**
* @depends testSelect
*/
public function testDelete() {
$this->db->deleteById(1001000);
$this->assertNull($this->db->getId(10010000);
}
// and so on
}
Метод setUp()
будет запускаться перед каждым тестовым сценарием, и убедитесь, что всеЗначения, которые нужны большинству тестовых случаев, tearDown()
очистит после тестового набора.
Аннотация @depends
гарантирует, что тест вставки не будет запущен, если тест выбора не пройден.(Если вы не можете загрузить значения, а затем вставить новые и получить те, которые не могут работать с эфиром, не нужно пробовать это).
Для этого также проверьте руководство по тестовым зависимостям