2013-05-20 3 views
2

Я смотрю вокруг, и я не нашел никакой хорошей информации о наборах тестов, может ли кто-нибудь объяснить, как это должно выглядеть.Как сделать набор тестов PHP

Я нашел этот пример:

require_once 'MyTest.php'; 

class MySuite extends PHPUnit_Framework_TestSuite 
{ 
    public static function suite() 
    { 
     return new MySuite('MyTest'); 
    } 

    protected function setUp() 
    { 
     print "\nMySuite::setUp()"; 
    } 

    protected function tearDown() 
    { 
     print "\nMySuite::tearDown()"; 
    } 
} 

Есть несколько вещей, которые я понимаю, а некоторые нет, я знаю, что я должен включать в свой TestCase, как включить «test.php»;

Я хочу сделать testuite, который содержит все мои тестовые окна, как должен выглядеть этот testuite? Я попробовал пример я нашел в itnernet и я получил сообщение об ошибке:

Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Argument #1 of PHPUnit_Framework_TestSuite::addTestSuite() must be a class name or object' in C:\xampp\php\pear\PHPUnit\Util\InvalidArgumentHelper.php:69 
Stack trace: 
#0 C:\xampp\php\pear\PHPUnit\Framework\TestSuite.php(288): PHPUnit_Util_InvalidArgumentHelper::factory(1, 'class name or o...') 
#1 C:\xampp\htdocs\exem\MyTestSuite.php(13): PHPUnit_Framework_TestSuite->addTestSuite('testFunctions') 
#2 [internal function]: AllTests::suite('AllTests') 
#3 C:\xampp\php\pear\PHPUnit\Runner\BaseTestRunner.php(124): ReflectionMethod->invoke(NULL, 'AllTests') 
#4 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('mytestsuite', 'C:\xampp\htdocs...', Array) 
#5 C:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true) 
#6 C:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main() 
#7 {main} 
    thrown in C:\xampp\php\pear\PHPUnit\Util\InvalidArgumentHelper.php on line 69 

Не могли бы вы написать мне или показать мне пример того, как Тестов выглядит? как выглядит код.

Мой TestFile выглядит следующим образом:

include 'functions.php'; 

class Test extends PHPUnit_Framework_TestCase 
{ 

    protected function getConnection() 
    { 
     $mysqli = new mysqli('local', 'root', '', 'db_13839918'); 

     if($mysqli->connect_errno > 0){ 
      die('Unable to connect to database [' . $mysqli->connect_error . ']'); 
     } 
    } 

    protected function setUp() 
    { 
     $mysqli = new mysqli('localhost', 'root', '', 'db_13839918'); 

     $now = time(); 
     $i = 0; 

     do { 
      $i = $i+1; 
      $mysqli->query("INSERT INTO login_attempts (user_id, time) VALUES ('4892388', '$now')"); 

     } while ($i < 6); 
    } 

    public function testCheckbrute() 
    { 
     $mysqli = new mysqli('localhost', 'root', '', 'db_13839918'); 

     $LessThanFive = checkbrute('4892389', $mysqli); 
     $this->assertFalse($LessThanFive); 

     $FiveFailedLogins = checkbrute('4892388', $mysqli); 
     $this->assertTrue($FiveFailedLogins); 
    } 

    public function testLogin() 
    { 
     $mysqli = new mysqli('localhost', 'root', '', 'db_13839918'); 

     $AccountIsLockedFalse = Login("xxxxx","xxx", $mysqli); 
     $this->assertFalse($AccountIsLockedFalse); 

     $NoUserExists = Login("xxxxxx","xxxxx", $mysqli); 
     $this->assertFalse($NoUserExists); 
    } 

    protected function tearDown() 
    { 
     $mysqli = new mysqli('localhost', 'root', '', 'db_13839918'); 
     $mysqli->query("DELETE FROM members WHERE id IN (9, 11)"); 
    } 
} 
+0

Пожалуйста, уточните свой вопрос, чтобы быть более конкретным. Какую часть вы не понимаете? С какими ошибками вы столкнулись? –

+0

Теперь его uppdated – user2354898

ответ

0

Что 'MyTest.php' выглядит?

Эта ошибка:

Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Argument #1 of PHPUnit_Framework_TestSuite::addTestSuite() must be a class name or object' 

означает, что эта линия, return new MySuite('MyTest'); вызывает проблемы.

Изменить его на return new MySuite('Test'); Строка, передаваемая MySuite, должна быть именем класса, содержащего тесты.

PHPUnit ищет класс под названием MyTest и не находит его.

+0

Я опубликовал свой код, ищите. – user2354898

+0

Да, я уже это сделал. Я получил это сообщение: MySuite :: setUp() MySuite :: tearDown() Время: 0 секунд, Память: 1.50Mb Выполнений не выполнено! Я думаю, что-то не хватает – user2354898