当前位置: 首页 > 知识库问答 >
问题:

phpunit跳过不同测试用例之间具有依赖关系的测试

萧明贤
2023-03-14

对于集成测试,我希望重用测试结果。依赖项是通过注释定义的。对于要执行的依赖测试,需要提供以前测试的结果。因此,测试需要以固定的顺序执行。否则,将跳过依赖于其他测试的测试。为了确保测试按固定顺序执行,定义了一个测试套件。仍然会跳过具有依赖项的测试。为什么呢?

阿泰斯特。php:

<?php

use PHPUnit\Framework\TestCase;

class ATest extends TestCase
{
    public function testA()
    {
        self::assertTrue(true);
        return $this;
    }
}

B测试。php:

<?php

use PHPUnit\Framework\TestCase;

class BTest extends TestCase
{

    /**
    * @depends ATest::testA()
    */
    public function testB($a)
    {
        self::assertTrue(true);
    }
}

phpunit。xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
         verbose="true"
>
    <testsuites>
        <testsuite name="dependency">
            <file>ATest.php</file>
            <file>BTest.php</file>
        </testsuite>
    </testsuites>
</phpunit>

phpunit——测试套件依赖项

PHPUnit 5.5。7由塞巴斯蒂安·伯格曼和撰稿人撰写。

运行时:PHP7.1。5与Xdebug 2.5。4配置:/phpunit。xml

.S 2/2(100%)

时间:49ms,内存:4.00MB

有1个被跳过的测试:

1) BTest::testB此测试取决于“ATest::testA()”是否通过。

可以,但测试不完整、跳过或有风险!测试:1,断言:1,跳过:1。

共有1个答案

马朝斑
2023-03-14

您不能让测试依赖于不同测试用例中的测试。测试需要包含在同一个测试用例中。由于测试不在测试用例中,因此会将其视为失败的测试,并在运行测试时跳过测试。

您的测试需要合并到一个测试中,以使依赖关系正常工作。

https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-phpunit测试。测试依赖项

部分原因是您的每个测试都应该是隔离的,并且能够以任何顺序运行。在单独的测试用例中,测试依赖于测试意味着测试文件需要以特定的顺序运行。由于具有循环测试依赖关系,这很容易变得复杂。

此外,您现在有一些影响测试的东西,这些东西不包含在您的测试用例中。这可能会导致维护测试的噩梦。

 类似资料:
  • 在我的夸克应用程序中,我在一个单独的gradle项目/模块中实现了存储库,部分原因是我希望能够确保单元测试不使用数据库等。 问题是,如果我想在测试中使用任何注入的依赖项,我需要使用@QuarkusTest,然后构建或启动确保满足所有依赖项。 有没有一种方法不涉及模仿每一个外部依赖,例如。? < li >运行测试时,不要在构建或启动期间强制依赖关系,而是在运行时让它出错(如果被访问)。 < li >

  • 我对Symfony 4.2应用程序进行了许多边缘到边缘测试。这里我指的是使用测试客户端进行Web请求,然后对结果进行断言的测试。示例: 在此类测试中,是否有方法更改服务容器中的特定服务? 示例问题:我的服务通过名为的抽象来发出web请求。对于我的测试,我希望使用,这样就不会发出真正的web请求。我如何告诉Symfony使用此双重测试? 令人惊讶的是,在主测试留档中没有关于如何执行此基本测试任务的信

  • 我使用Intelli J IDE构建一个包含所有依赖项和测试类的可执行JAR。 /src/main/java/META-INF/MANIFEST.MF是 清单版本:1.0主类:org.testng.testng 当我用命令运行jar时 java-jartahoe-test.jarorg.testng.TestNG套件/t123.xml 我得到一个错误: 错误:无效或损坏的jar文件tahoe-te

  • 我能够部署一个RESTEasy应用程序,可以很好地使用Weld(这意味着我的CDI可以工作),但我在集成测试中遇到了一些麻烦。我得到这个错误: 在测试时: 日志中的最后一条消息是

  • 我无法使用ArchUnit制定以下测试: 我想确保某个包中的所有类只访问应用程序基包之外或某个子包内的类(“或”而不是“xor”)。 我得到的是: 问题是,或条件应该在onlyAccessClassesthat()中。如果一个类同时具有两种类型的访问权限,上述公式将失败,我希望这两种类型都有效。 我怎样才能实现我想要的?谢谢你在这方面的任何帮助...

  • org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“com.sonos.arcor.service.AddressServiceTest”的bean时出错:通过字段“service”表示的未满足的依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefin