0

当我尝试使用以下命令运行 Stryker 时,它会说找不到.csproj文件。该文件存在于配置的位置,但:

C:\Users\Me\Documents\git\my_pkg>dotnet stryker --solution-path ".\My.Project.sln" --test-runner DotnetTest --project-file ".\test\My.Project.Tests\My.Project.Tests.csproj"

   _____ _              _               _   _ ______ _______
  / ____| |            | |             | \ | |  ____|__   __|
 | (___ | |_ _ __ _   _| | _____ _ __  |  \| | |__     | |
  \___ \| __| '__| | | | |/ / _ \ '__| | . ` |  __|    | |
  ____) | |_| |  | |_| |   <  __/ |    | |\  | |____   | |
 |_____/ \__|_|   \__, |_|\_\___|_| (_)|_| \_|______|  |_|
                   __/ |
                  |___/


 Version: 0.20.0 (beta)

[10:41:49 INF] Time Elapsed 00:00:00.8016192
Stryker.NET failed to mutate your project. For more information see the logs below:

No .csproj file found, please check your project directory at C:\Users\Me\Documents\git\my_pkg

为什么找不到文件?

4

1 回答 1

2

--project-file应该指向您打算变异的项目,而不是单元测试项目。也就是说,如果My.Project.csproj是您正在测试的项目并且My.Project.Tests.csproj是随附的单元测试,那么我通常会导航到包含My.Project.Tests.csproj的文件夹和从命令行运行dotnet stryker。如果My.Project.Tests.csproj中只有一个项目引用,它将被自动检测到,并且 Stryker 将尝试创建突变体来检查您的单元测试项目。如果My.Project.Tests.csproj文件中有多个项目引用,那么您将被要求通过传递--项目文件

我个人会在您的单元测试项目的根目录中创建一个 stryker-config.json,如下所示:https ://github.com/stryker-mutator/stryker-net/blob/master/docs/Configuration.md

你可能想要这样的东西:

{
  "stryker-config": {
    "reporters": [
      "progress",
      "html"
    ],
    "log-level": "info",
    "log-file": true,
    "timeout-ms": 10000,
    "project-file": "My.Project.csproj",
    "max-concurrent-test-runners": 4,
    "threshold-high": 80,
    "threshold-low": 70,
    "threshold-break": 60,
    "mutation-level": "Standard",
    "excluded-mutations": [
      "string"
    ],
    "dashboard-compare": false
  }
}

假设在您的单元测试项目中引用了 My.Project.csproj。

于 2021-01-07T14:14:37.473 回答