问题标签 [dotnet-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
71 浏览

c# - 如何从另一个项目运行 Nunit

我有一个名为TestManager的用于测试自动化的 NUnit 项目,并且我创建了另一个名为TestManagerGateway的 Web 应用程序项目,以使最终用户能够使用“dotnet test”命令调用这些测试。

基本上在网关中调用 REST API 时,它只是尝试使用TestManager dll 运行 dotnet test 命令(“dotnet test TestManager.dll” - 我试图使用我的 TestMangerGateway 项目中对 TestManager 项目 dll 的引用。

但是,我意识到这是不可能的,并且出现“找不到执行应用程序所需的库'libhostpolicy.so'...”的致命错误。

显然,在 Nunit 项目(TestMAanger)上使用TestManager.dll的完整路径时确实有效,但恐怕在为这两个项目创建容器时,此方法将不起作用。为两个项目构建容器(docker 容器)后,如何确保在使用此 shell 命令时可以引用TestManager项目?

0 投票
0 回答
121 浏览

c# - 如何使用 dotnet test 和 log4net 在控制台和 trx 文件中记录不同数量的信息?

我正在尝试dotnet test并尝试在控制台窗口中创建最少的日志,但之后在 trx 文件中添加更多日志。我首先尝试像这样简单地运行它:

但随后它记录了很多信息(实际上是我写给Log.Info或的所有信息Log.Debug)。所以我尝试了另一个级别的冗长:

但是有了这个,它甚至不会显示测试是否通过/失败(在测试运行时),我必须等到运行完成才能获得不好的摘要。

所以我开始查看我的 log4net 配置文件,看看我是否可以改变一些东西。它看起来像这样:

我像这样加载它:

所以我可以将levelMinlevelRangeFilter 更改为INFO,然后我的控制台会更干净。但问题是 TRX 文件将获得相同的次要信息,这使得调试变得困难。我也尝试了多个不同的记录器,但没有任何区别:

所以我的问题是,我如何设置我的 log4net 以便它对verbosity我发送的内容做出反应,dotnet test或者我如何制作它以便我的 TRX 文件包含所有信息/调试日志但它不会在控制台中显示这些日志?

0 投票
1 回答
20 浏览

.net - 命令在本地运行时输出日志,但在服务器上运行时不输出

当我dotnet test --filter "Category=rda"在本地 PC 上运行时,dos 终端会输出所有日志记录。如果我在其中一台服务器上运行相同的程序,则不会输出任何日志。我该如何解决

0 投票
0 回答
164 浏览

yaml - 将覆盖信息从 C# 项目的 Coverlet 上传到 SonarCloud

我正在尝试收集覆盖信息并将其发布到我的 C# 项目的 SonarCloud,使用 GitHub Actions 作为我的 CI 管道。执行很简单,基本上是尝试对所有项目执行测试,合并所有覆盖文件:

请注意,我确实需要同时输出opencoverjson格式。coverlet似乎只有正确合并是json输出格式之一,因此它可以opencover最终将其转换为。

问题是,这不会在 CI 上生成覆盖信息 - 下载工件显示没有生成的文件夹或文件。但是,如果只是 pass /p:CoverletOutputFormat=opencover,则所有覆盖信息都会在 CI 上生成 - 但由于没有json输出而无法正确合并。

在本地,命令

正常工作并生成正确的覆盖 XML 文件。

可能是什么问题,为什么它不适用于为 CI 指定的两种覆盖格式?最初我以为我不知道在 YAML 中转义引号,但这里似乎并非如此。

0 投票
0 回答
101 浏览

visual-studio - 远程调试 dotnet 测试:未加载 vstest.console.pdb

我有一个 C# 应用程序,此外,还有一个正在编译为 dll 的 NUnit 测试项目。

我曾经将它复制到远程平台,在那里我使用以下命令运行它:

测试正在运行。

现在我想调试一个测试,所以我在远程平台上打开了VS2017 Remote Debugger,并在开发平台的Visual Studio中附加到进程。

在遥控器中,我看到:

但在 Visual Studio 中,我得到:

vstest.console.pdb 未加载

我该如何解决这个问题?我在哪里可以找到这个 pdb?

==================================================== ===

注意 1:我将整个编译文件夹复制到远程,当然包括 PDB。

注意 2:我$env:VSTEST_HOST_DEBUG=1在 Powershell 中设置。

0 投票
1 回答
252 浏览

.net-core - 在“dotnet test --filter”选项中传递多个测试名称

我正在尝试使用 dotnet test 命令重新运行失败的测试。我想通过测试运行期间创建的文件中的失败测试列表。我似乎无法为“--filter”选项获得正确的“&”运算符语法。每次运行我只能通过一个测试名称。例子: dotnet test --filter "FullyQualifiedName~TestOne1 & FullyQualifiedName~TestOne2"

0 投票
1 回答
87 浏览

azure-devops - 点网测试无法在 Azure DevOps 中恢复 EnterpriseLibrary.Logging Nuget

我的 AzureDevOps YML 看起来像这样:

EnterpriseLibrary.Logging 是托管在 nuget.org 的 Nuget 包:https ://www.nuget.org/packages/EnterpriseLibrary.Logging/

azure dev ops 使用的我的 Nuget.config 确实具有以下条目:

恢复解决方案工作正常:

构建工作正常

在 Dot Net Test 运行期间,当它尝试恢复 .Net Core 3.1 测试时,它无法从 nuget.org 恢复相同的库。它正在尝试访问其他私人提要并失败并出现 401 未经授权的错误

--- :出于隐私目的隐藏我们的域。

用于恢复解决方案的我的 Nuget.config 包含指向 nuget json 的链接

即使在调试模式下,在 dotnet 测试运行期间,它也从未显示它试图访问 nuget.org 以恢复 Enterpriselibrary.common

请帮忙,我已经尝试了几乎所有的解决方案,但测试项目仍然失败

谢谢

0 投票
1 回答
542 浏览

azure-pipelines - 如何通过一次调用“dotnet test”正确生成 TRX 文件和代码覆盖率结果?

首先,一些上下文:我有一个 Visual Studio 解决方案,其中包含几个生产类库和九个单元测试项目。所有项目都针对 .NET 5。我正在运行 .NET 5.0.401。所有单元测试项目都引用了coverlet.collector. 我不使用旧coverlet.msbuild包。根据我的阅读,使用XPlat Code Coverage现在是 .NET Core 的惯用语。

我有一个用于 CI 构建的 Azure Pipelines 管道。作为该管道的一部分,我想运行所有单元测试,生成单元测试结果以上传到管道,并生成代码覆盖结果以上传到管道。我已经阅读了几篇似乎使这变得简单的博客文章和文档;但是,我发现它不过如此。

让我们从在我的本地工作站上运行一些命令开始。出于本练习的目的,我们假设我已经使用以下命令成功构建了解决方案:

如果我运行这样的测试:

然后我看到代码覆盖结果存储在以 GUID 命名的子目录中。为什么微软决定这样做我不知道,但那是我无法控制的。

Cobertura 代码覆盖率结果

(运行此命令并截屏后,我删除了该test-results目录。)

请记住,我还想生成单元测试结果。为此,我将--logger trx参数添加到同一命令行。这一次,创建了许多其他文件夹,其中包含看似重复的代码覆盖结果。此外,我得到了.trx我正在寻找的文件。

重复代码覆盖结果

.trx您会注意到,除了我想要的九个文件之外,还有另外九个代码覆盖率报告。

在我的自托管管道构建代理上生成了类似的重复文件。在管道中,如果我尝试执行以下任务:

我收到一个错误:

它在此处报告的目录不是我省略时生成的 GUID 目录--logger trx之一,而是重复目录之一。

这个答案似乎表明我正在正确地做所有事情。我还对该答案发表了评论,希望得到一些帮助。

我有几个问题:

  1. dotnet test是否正确调用以便同时生成代码覆盖结果和.trx文件?
  2. 是否dotnet test支持这种情况?
  3. Azure Pipelines 市场中的扩展功能现在ReportGenerator真的内置了dotnet吗?
  4. 哪些代码覆盖率结果是“真实”的?在发布代码覆盖率结果之前,是否需要将 GUID 文件夹复制到另一个位置?
  5. 我想指定一个 RunSettings 文件,以便执行诸如将具有某些属性的成员排除在代码覆盖引擎考虑之外的事情。RunSettings 是否与我的工作流程兼容?
0 投票
0 回答
40 浏览

msbuild - 如何在具有 UWP 和 .NET Core / .NET 6 测试项目的解决方案文件上运行“dotnet test”?

我有一个解决方案,其中包含多个 .NET Standard、.NET Core、.NET 6,最后是UWP项目。

此外,我有所有的测试项目,包括 UWP 项目。

我的问题是,我无法在我的解决方案上运行dotnet test, 甚至dotnet build, 命令并让它实际工作。每次尝试dotnet在解决方案上使用命令时,都会出现以下异常:

每当我的解决方案中有一个 UWP 项目时,似乎都会发生这种情况。

这很令人沮丧,因为我希望有一种(想想构建系统)方法来恢复、构建和测试我的解决方案与多种项目类型。

为了对我的整个解决方案执行任何操作,我需要使用 MSBuild 命令进行构建操作,例如msbuild /t:restore, 或vstest.console针对我的 UWP 测试时的命令。当不针对 UWP 项目时,我可以像平常一样使用dotnet命令。

命令行操作是否dotnet不适合构建和测试像我这样的混合解决方案?或者有什么我想念的吗?

0 投票
0 回答
63 浏览

visual-studio - 从批处理脚本运行或从 cmd.exe 手动运行时,Dotnet 测试过滤器不起作用

使用 Visual Studio 2019、.Net 5.0、NUnit

当我使用 VS 开发人员命令提示符从 Visual Studio 运行以下命令时,它可以返回预期的 1 测试:

dotnet test --filter TestCategory~ParkingTests

当我使用 .bat 脚本运行相同的命令时,它会运行解决方案中的所有测试 (3),而不仅仅是应该由过滤器返回的 1,即使它启动时,它也会报告 1 个测试与过滤器匹配。

当我在 Visual Studio 之外使用 cmd.exe 手动运行相同的命令时,会发生同样的事情 - 无论过滤器如何,所有 3 个测试都会运行。

批处理文件的格式:

我还注意到过滤器“=”运算符在使用批处理脚本时不起作用,但在使用 Visual Studio 开发人员命令提示符时它确实起作用。

只有 1 个测试有 [Category("ParkingTests)]

摘要:Visual Studio 开发人员命令提示符:

  • 过滤器作品包括“=”和“~”

批处理脚本或在 Visual Studio 之外的 cmd.exe 中手动键入命令:

  • ~ 操作员接受但过滤器被忽略:运行 3 个测试
  • = 不接受操作员:0 次测试运行