Phpunit测试在调试时通过xdebug运行,但在正常运行时失败
我使用Phpunit编写了一些测试用例 当我在控制台中执行它们时,其中一个测试失败了。 因此,我在cli上使用了带有phpstorm的xdebug。代码执行正确,测试通过。没有代码更改。我彻底检查了代码,代码似乎没有错误 任何人都遇到过类似的问题,如果是,解决方案是什么Phpunit测试在调试时通过xdebug运行,但在正常运行时失败,php,phpunit,Php,Phpunit,我使用Phpunit编写了一些测试用例 当我在控制台中执行它们时,其中一个测试失败了。 因此,我在cli上使用了带有phpstorm的xdebug。代码执行正确,测试通过。没有代码更改。我彻底检查了代码,代码似乎没有错误 任何人都遇到过类似的问题,如果是,解决方案是什么 public function testGetAccruedDaysFromProcessDateBeginning() { $annualLeaveType = $this->getLeaveTypeServic
public function testGetAccruedDaysFromProcessDateBeginning() {
$annualLeaveType = $this->getLeaveTypeService()->readLeaveType(1);
$leaveTypeRule = $this->getLeaveTypeRuleService()->readLeaveTypeRule($annualLeaveType);
$leaveEntitlementRule = $leaveTypeRule->getLeaveEntitlementRule();
$employee = $this->getEmployeeService()->getEmployee(1);
$accruedDaysCount = $this->getLeaveEntitlementProcessor()->getAccruedDaysFromProcessDate($employee, $leaveEntitlementRule, '2015-01-01');
$this->assertEquals(15, $accruedDaysCount);
}
public function testGetAccruedDaysFromProcessDateEnd() {
$annualLeaveType = $this->getLeaveTypeService()->readLeaveType(1);
$leaveTypeRule = $this->getLeaveTypeRuleService()->readLeaveTypeRule($annualLeaveType);
$leaveEntitlementRule = $leaveTypeRule->getLeaveEntitlementRule();
$employee = $this->getEmployeeService()->getEmployee(1);
$accruedDaysCount = $this->getLeaveEntitlementProcessor()->getAccruedDaysFromProcessDate($employee, $leaveEntitlementRule, '2015-12-31');
$this->assertEquals(16, $accruedDaysCount);
}
请提供失败测试的源代码。第一个测试通过,但第二个测试仅在cli上运行时失败,在调试模式下工作正常。在哪一点上失败?实际结果是什么?第二次返回的实际结果是15,如果在xdebug上运行,则返回16,因此第二次测试通过。(使用心灵感应,因为没有足够的信息)在一个环境中失败的测试和在另一个环境中通过的测试通常意味着糟糕的隔离:要么测试之间的全局状态泄漏,使它们依赖于它们运行的特定顺序;或者执行环境影响测试。PHP/PHPUnit版本在这两种情况下是否相同?自动加载的工作方式相同吗?PHPUnit配置是否正确加载?您是否在同一台计算机上运行它们?请提供失败测试的源代码。第一个测试通过,但第二个测试只有在cli上运行时才失败,在调试模式下工作正常,在哪一点上失败?实际结果是什么?第二次返回的实际结果是15,如果在xdebug上运行,则返回16,因此第二次测试通过。(使用心灵感应,因为没有足够的信息)在一个环境中失败的测试和在另一个环境中通过的测试通常意味着糟糕的隔离:要么测试之间的全局状态泄漏,使它们依赖于它们运行的特定顺序;或者执行环境影响测试。PHP/PHPUnit版本在这两种情况下是否相同?自动加载的工作方式相同吗?PHPUnit配置是否正确加载?你在同一台机器上运行它们吗?