证明PHPUnit测试失败

证明PHPUnit测试失败,php,symfony,phpunit,Php,Symfony,Phpunit,代码库:PHP、Symfony、phpunit9 项目要求:单元测试的100%代码覆盖率 我在微服务体系结构中构建了多个代码库。这些微服务共享一些共同的特性和功能,因此已经将它们设置为composer包的混合 由于其中许多需要重复测试,因此也使用composer进行了共享。 我已经创建了一个基本测试用例,我的所有测试都将扩展它。这包括可以在子测试中轻松调用的预先编写的测试 例如: 类集成WebTestCase扩展WebTestCase { 公共函数assertDataResponseStruct

代码库:PHP、Symfony、phpunit9

项目要求:单元测试的100%代码覆盖率

我在微服务体系结构中构建了多个代码库。这些微服务共享一些共同的特性和功能,因此已经将它们设置为composer包的混合

由于其中许多需要重复测试,因此也使用composer进行了共享。 我已经创建了一个基本测试用例,我的所有测试都将扩展它。这包括可以在子测试中轻松调用的预先编写的测试

例如:

类集成WebTestCase扩展WebTestCase { 公共函数assertDataResponseStructure{}//测试响应的结构 } 上述代码在所有实际测试中都能正常工作

需要明确的是:代码因此包含在src文件夹中。该项目要求进行100%的单元测试。。。这意味着还需要对上述测试进行测试

这相对容易,但有一个问题:

类集成WebTestCase扩展WebTestCase { 公共函数assertDataResponseStructure{ 如果可以解析/*内容…*/ //一些测试 }否则{ $this->fail'无法分析内容'; } } } 如果无法解析内容,则此测试将正确失败。这是理想的行为

因此:

类IntegrationWebTestCaseTest扩展了IntegrationWebTestCase { //测试正确通过所有测试 公共函数testAssertDataResponseStructure{/*…*/} //正确测试的测试未通过测试 公共函数testAssertDataResponseStructureFails{/*…*/} } 如何运行phpunit并标记应该失败的测试。如

类IntegrationWebTestCaseTest扩展了IntegrationWebTestCase { //测试的测试通过了所有测试 公共函数testAssertDataResponseStructure{/*…*/} //测试的测试失败,但被标记为通过,因为这是关键 公共函数testAssertDataResponseStructureFails{/*…*/} }
基本上:你能调用一个函数而不是在phpunit中反转结果吗?

很难按原样回答这个问题,因为很明显这里我们有一个函数的实例。一般来说,这个概念很简单:测试必须通过,因此可以反转失败分支的逻辑。显然,调用$this->fail不能直接反转,所以您需要在那里进行一些重构。对不起,这没有意义。将失败设定为期望是完全错误的。你只需要重新定义你的成功结果,声明正确的期望和主张。如果你所断言和期望的就是你所得到的,那么没有必要让测试失败。如果不通过测试,对不愉快路径的测试太常见了。我想你误解了:如何证明成功的失败,而这是在使用phpunit框架?无论如何,这是一个有效的测试。打开一扇锁着的门应该失败是一个有效的测试。@elb98rm:正如前面所评论的,断言已经完成。顺便说一句,Phpunit并没有魔力,您应该能够用普通的PHP直接完成它。然后将代码移植到测试用例中。明白了。现在我抛出了一个异常,因为它很容易测试,但它不是一个成功失败的测试。我将研究断言是如何成功失败的,并研究如何测试它。