Laravel测试未定义的方法

时间:2017-01-24 12:40:18

标签: php laravel laravel-5.3

我尝试在laravel中编写测试,但我甚至无法运行示例测试,bcs我得到错误:

λ phpunit
PHP Fatal error:  Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1042
Stack trace:
#0 E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(163): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 E:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 E:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 E:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
  thrown in E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1042

Fatal error: Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:1042
Stack trace:
#0 E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php(163): PHPUnit_TextUI_TestRunner->handleConfiguration(Array)
#1 E:\xampp\php\pear\PHPUnit\TextUI\Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#2 E:\xampp\php\pear\PHPUnit\TextUI\Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#3 E:\xampp\php\phpunit(46): PHPUnit_TextUI_Command::main()
#4 {main}
  thrown in E:\www\ikcms\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1042

当然,这是在下载laravel之后发生的。

Laravel版本:5.3 PHPUnit:5.0

4 个答案:

答案 0 :(得分:3)

如果你在多个项目中使用phpunit,那么通常更容易弄不到全局安装的phpunit,而是从你项目的供应商文件夹中运行它。

您可以使用以下方式检查项目:

joe

(如果您看到composer info phpunit/phpunit ,那么我会[InvalidArgumentException] Package phpunit/phpunit not found

由于Laravel includes phpunit by default您很可能会运行

composer require phpunit/phpunit --dev

以及

./vendor/bin/phpunit …

您可以确定您正在运行该项目的composer.json中指定的phpunit版本。

答案 1 :(得分:1)

在升级包含phpunit的Laravel依赖项之前,我得到了同样的错误。 此更新提供了PHPUnit的5.7.6版而不是5.6版。*。 如果您使用计算机路径的PHPUnit,它将为您提供此错误。 我认为它将被修复,但目前您可以通过在项目根目录上编写php vendor/bin/phpunit来使用Composer供应商中包含的二进制文件来执行PHPUnit。对我而言,它可以尝试。

答案 2 :(得分:0)

正如@ julien-metral所说,在您的计算机上全局安装的PHPUnit版本早于Laravel 5.4中使用的版本。您可以通过编辑public class RespondentController : Controller { private RespondentBINUSEntities db = new RespondentBINUSEntities(); public ActionResult Create() { ViewBag.CITY_ID = new SelectList(db.LTCITies, "CITY_ID", "CITY_NAME", 1); var entry = new Models.TRRESPONDENT { ENTRY_DATE = DateTime.Now, AUDIT_TIME = DateTime.Now, }; return View(); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "RESPONDENT_ID,BC_ID,BINUSIAN_ID,FULL_NAME,EMAIL,PHONE_NUMBER,ADDRESS,CITY_ID,ZIP_CODE,SOURCE_ID,ENTRY_DATE,PACKAGE,AUDIT_USER_NAME,AUDIT_TIME,AUDIT_ACTIVITY")] TRRESPONDENT tRRESPONDENT) { if (ModelState.IsValid) { db.TRRESPONDENTs.Add(tRRESPONDENT); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.CITY_ID = new SelectList(db.LTCITies, "CITY_ID", "CITY_NAME", tRRESPONDENT.CITY_ID); return View(tRRESPONDENT); } } 文件并将~/.composer/composer.json依赖关系版本更改为

来升级它
phpunit/phpunit

之后你应该运行"phpunit/phpunit": "~5.0",

答案 3 :(得分:0)

如果你在Windows中。只需在phpunit.xml附近创建phpunit.bat,然后将此脚本放入phpunit.bat。

CALL vendor \ bin \ phpunit

这就是全部。然后尝试运行phpunit。