如何使用php在控制台应用程序中重新加载phpunit

时间:2019-02-15 22:42:57

标签: php phpunit

我正在创建一个控制台应用程序,以帮助我用php开发网站。 控制台应用程序在while循环中运行,打印带有选项的菜单,我将输入一个数字来告诉应用程序我想要它做什么。在我的一个选项中,我正在运行phpunit测试,当我运行该测试时它可以工作,但是当我更新测试并再次按我的选项时,phpunit显示“未执行测试!”。当我重新启动控制台应用程序时,它可以工作,但是当我尝试第二次运行单元测试时,我仍然遇到相同的问题。

这是一个代码示例

我已经厌倦了实例化一个新的phpunit命令,然后使用run方法。

我尝试打破循环并再次调用start。

require_once __DIR__ . '/vendor/autoload.php';

public function printMenu()
{
     echo "*******menu*****";
     echo "\r\n";
     echo "option 1: do something";
     echo "\r\n";
     echo "option 2: Do unit test:";
     echo "\r\n";
     echo "option 3: Exit";
     echo "\r\n";
}

public function begin(){

    while(true){
       $this->printMenu();
       $input = trim(fgets(STDIN));

       if($input == 1){
         $this->doSomething();
       }else if($input ==2){
         PHPUnit\TextUI\Command::main(false);
       }else if($input == 3){
        break;
       }
    }
}

//Sample test class (just an example)

use PHPUnit\Framework\TestCase; 
class SampleTest extends TestCase 
{
   public function testTrueAssertsToTrue(): void { 
      $this->assertTrue(true); 
      $this->assertTrue(true); 
      $this->assertTrue(false); 
      $this->assertTrue(true); 
      $this->assertTrue(true); 
    }
}

//update will be

 use PHPUnit\Framework\TestCase; 

class SampleTest extends TestCase 
{ 
     public function testTrueAssertsToTrue(): void 
     { 
         $this->assertTrue(true); 
         $this->assertTrue(true); 
         $this->assertTrue(true); 
         $this->assertTrue(true); 
         $this->assertTrue(true); 
    }
}

1 个答案:

答案 0 :(得分:0)

我设法通过更改来解决

PHPUnit\TextUI\Command::main(false); 

./vendor/bin/phpunit