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

PHPUnit无法识别给定目录中的测试

谭仰岳
2023-03-14

我正在创建一个项目,使用composer获取所有依赖项。我也使用phpunit,我刚刚将我的项目迁移到phpunit 6.0。在此更改之前,我的phpunit始终工作正常。

在此之前,我使用的是5.7.13版本。

我目前需要我的编写器中的包。json如下所示:

  "require-dev": {
    "phpunit/phpunit": "^6.0"
  },

我让我的所有测试扩展\PHPUnit\Framework\TestCase类,而不是PHPUnit\u Framework\u TestCase类。

我的配置保持不变,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit bootstrap="vendor/autoload.php"
         color="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         stopOnFailures="false"
         syntaxCheck="false">
    <testsuites>
        <testsuite name="Unit Tests">
            <directory>./tests/bas/ProjectName/</directory>
        </testsuite>
    </testsuites>
</phpunit>

我的目录结构如下所示:

├───src
│   └───bas
│       └───ProjectName
│           └───... source files
├───tests
│   └───bas
│       └───ProjectName
│           ├───...test files like "ExampleTest.php"

在我的项目根目录中打开终端并输入phpunit命令时,它会给出以下消息:

PHPUnit 3.7。塞巴斯蒂安·伯格曼21。

从C:\Users\Bas\Web\u development\ProjectName\phpunit读取配置。xml

时间: 30 ms,内存: 4.00MB

没有执行任何测试!

我已经尝试将后缀="Test.php"添加到phpUnit配置中的目录标记中。

我还尝试从Composer中删除/vendor/文件夹,并通过Composer update命令重新安装包。

我的所有测试函数都以test字开始。

根据John Smith的回答,我收到以下错误消息:

dir=$(d=${0%[/\\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
        # Cygwin paths start with /cygdrive/ which will break windows PHP,
        # so we need to translate the dir path to windows format. However
        # we could be using cygwin PHP which does not require this, so we
        # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
        if [[ $(which php) == /cygdrive/* ]]; then
                dir=$(cygpath -m "$dir");
        fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/phpunit" "$@"

共有2个答案

瞿博易
2023-03-14

尝试运行php"供应商/phpUnit/phpUnit/phpUnit"

楚举
2023-03-14

如果您使用composer来管理依赖关系,那么当您从项目的根运行时,只需phpunit即可执行全局和旧的phpunit二进制文件。

您只需使用以下工具运行测试:

PHPUnit 3.7。塞巴斯蒂安·伯格曼21。

您应该使用命令php运行本地依赖项,而不是全局执行/供应商/bin/phpunit

 类似资料:
  • 问题内容: 我有以下Python代码可删除目录中的文件。由于某种原因,我的.svn目录未被识别为目录。 我得到以下输出: .svn不是目录 任何想法,将不胜感激。 问题答案: 您需要在检查之前创建完整路径名:

  • 第一个模块 sonar.modulekey=com.app.core.pdf:pdf-utils sonar.projectbasedir=/var/lib/jenkins/workspace/myproject/pdf-utils sonar.projectkey=com.app.core.pdf:pdf-utils sonar.projectname=pdf-utils sonar.proje

  • 问题内容: 我使用 m2eclipse 在Eclipse中导入Maven Java项目。 它无法识别为源目录。 以图形方式在包资源管理器中(或当我在项目属性中查看 Java-Build-Path 时), 此目录不在source文件夹列表中(while 或do)。 要访问它,我必须直接查看src /目录,然后开始展开…不太方便! 但是,如果我运行,资源将被复制到正确的目录。 (例如: 到) 问题 这

  • 全部的 我在我的主要Spring Boot应用程序类中定制了,如下所示。 其中,是的扩展。我的POJO是用Jackson的注释的 我使用和注释通过HTTP公开了POJO。这很好,当我运行应用程序并访问endpoint时,会调用自定义过滤器。 现在我编写了一个集成测试,如下所示。 当我运行测试时,obj为null,我看到一个错误,没有配置FilterProvider 我做错了什么,如何纠正? 我的文

  • 基本上,当我尝试创建我的容器时,我得到了这个错误: 不知道为什么会这样。它在Manjaro上运行得很好,但在Arch实验室上却不起作用。

  • 我使用下面的代码来识别项目中的测试类,整个想法是找到测试类,并将测试代码的数量与生产代码进行比较!下面是我的一段代码,负责查找测试类并计算行数: 但是在几个项目上运行代码后,我意识到寻找包含或或的测试类的想法并不是寻找测试类的最佳实践,因为几个项目使用自己的测试方法!所以问题是有比我更好的方法来定义测试类吗? 谢啦