我正在寻找一种在VSCode中调试测试(mstest).Net Core 2.0的方法?
我什么也没找到。
谢谢!
我有一个带有NUnit测试项目的解决方案(Foo.Test)。
+-- src
| +-- Foo.Gui
| +-- Foo.Test
Run Code Online (Sandbox Code Playgroud)
+-- src
| +-- Foo.Gui
| +-- Foo.Test
Run Code Online (Sandbox Code Playgroud)
以下调用用于测试:
dotnet test --no-build -c Release -v n src\%TESTPROJECT%\%TESTPROJECT%.csproj --logger "trx;LogFileName=testreport.trx"
如果我在本地运行它,一切都会按预期工作:
对构建服务器的相同调用没有找到任何测试:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="TestResults\**" />
<EmbeddedResource Remove="TestResults\**" />
<None Remove="TestResults\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="GitVersionTask" Version="5.1.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Foo.Gui\Foo.Gui.csproj" …Run Code Online (Sandbox Code Playgroud) 我想在构建服务器上运行一些 nUnit 测试,而不必在那里安装 .NET Core SDK。
测试目标netcoreapp3.1.
对于 .NET Framework 可以使用 运行它们nunit-console-runner,但对于 .NET Core 似乎不可能 - 请参阅/sf/answers/3699839391/。
如果发现这个问题https://github.com/Microsoft/vstest/issues/1224,但它似乎没有提供任何合理的解决方案。
我在 Azure Devops 上有一个标准 .NET Core (Ubuntu) 管道,并且在我的测试项目中,我使用环境变量。在我的管道中,我已经像这样定义了我的组变量
variables:
- group: MyApiVariables
Run Code Online (Sandbox Code Playgroud)
每当我为我的项目运行测试时
- task: DotNetCoreCLI@2
displayName: "Testing Application"
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Run Code Online (Sandbox Code Playgroud)
实际的环境变量没有传入。它们是空白的。
为了让它运行,我缺少什么?我什至在编辑管道页面中定义了变量,但没有运气
- task: Bash@3
inputs:
targetType: 'inline'
script: echo $AppConfigEndpoint
env:
AppConfigEndpoint: $(AppConfigEndpoint)
ApiConfigSection: $(ApiConfigSection)
Run Code Online (Sandbox Code Playgroud)
谢谢!
Microsoft (R) 测试执行命令行工具版本 17.4.0存在错误,我们喜欢使用 17.3.1。
我们正在dotnet testAzure Pipeline 中执行以下操作:
- task: UseDotNet@2
displayName: 'Use .NET 6'
inputs:
packageType: 'sdk'
version: '6.0.x'
# build tasks etc.
- task: DotNetCoreCLI@2
displayName: Run Unit Tests
inputs:
command: 'test'
projects: '$(testProjects)'
# ... more config
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这有时给我们 17.4.0,有时为 17.3.1 - 即使使用相同的代码(重建相同的提交)。这可能是因为我们的构建代理与其他团队共享。
有没有办法强制测试执行命令行工具版本为 17.3.1 ?
我正在尝试使用 dotnet test 命令重新运行失败的测试。我想从测试运行期间创建的文件传递失败测试的列表。我似乎无法正确理解“--filter”选项的“&”运算符语法。我每次运行只能通过一个测试名称。例子:
dotnet test --filter "FullyQualifiedName~TestOne1 & FullyQualifiedName~TestOne2"
目前,对于我们的 selenium UI 测试,我们正在读取可用的 selenium 服务器浏览器来决定我们将运行测试的线程数,并在启动 nunit 控制台运行程序时传递“workers”参数。
我现在正在将我们的自动化迁移到 .net core。不幸的是,nunit 控制台尚不支持 .net core,我们现在使用“dotnet test”命令来运行测试,该命令仍然运行 nunit 测试。
我搜索了很多,但找不到如何将“workers”参数传递给nunit?还有其他用于线程“dotnet test”的参数,但它们不允许您运行多于 CPU 核心数的线程。请注意,我不想对 assemblyInfo 中的线程数进行硬编码,因为我们经常在每次运行时使用不同数量的线程,具体取决于运行测试的 selenium 服务器。
我尝试在运行测试命令时使用 .runsettings 设置文件,但似乎也没有检测到该参数。我最终得到的是一个测试运行,线程数等于机器上的 cpu 核心数,但我需要比这更多的线程。
版本:
我的项目结构如下:
.
??? Application
??? Application.Core
??? Application.Domain
??? Application.Tests
??? Application.IntegrationTests
??? README.md
Run Code Online (Sandbox Code Playgroud)
运行我的测试的命令我使用以下输入:
dotnet test $folder.FullName -c Release --no-build /p:CoverletOutput='$root\coverage' /p:MergeWith='$root\coverage.json' /p:CoverletOutputFormat=opencover
Run Code Online (Sandbox Code Playgroud)
这里$folder是指向我Application.Tests路径:C:\projects\coredemoapp\CoreDemoApp.Tests与$root以C:\projects\coredemoapp\
所有测试都成功运行。然而,问题是,coverage.json也不是coverage.opencover.xml没有创建的文件。
我也尝试coverlet直接使用以下命令:
coverlet <path to test.dll> -
-target "dotnet" --targetargs "test --no-build" --merge-with $root\coverage.json --format opencover
Run Code Online (Sandbox Code Playgroud)
,一切都在我的本地机器上运行,并具有指向 dll 的显式路径。但是,在使用前一个$folder.FullName作为运行命令的情况下<path to assembly>,coverlet 假定调试dll的路径,而不是它应该的发布版本并且失败。
我最初在 asp.net 文档上发布了一个问题,并在此处引用。
由于删除了公共 Startup.cs,从 NET5 迁移到 NET6 破坏了使用 WebApplicationFactory 的大量测试。另一种选择是转向程序,该程序在新模板出现之前一直有效。在新模板中没有公共类程序,因此我们需要添加一个公共部分类 Program {}
我正在查看文档,他们提供了一个使用 InternalsVisibleTo 的新解决方案,恕我直言,它更好,因为它不会仅出于测试目的而更改代码。
然而,这会导致这样的代码
public class UnitTest1 : IClassFixture<WebApplicationFactory<Program>>
{
public UnitTest1(WebApplicationFactory<Program> applicationFactory)
{
}
}
Run Code Online (Sandbox Code Playgroud)
然而问题是程序是内部的,这会触发 CS0051:
UnitTest1.cs(8, 12):[CS0051] 可访问性不一致:参数类型“WebApplicationFactory”比方法“UnitTest1.UnitTest1(WebApplicationFactory)”更难访问
问题是 xunit 要求它的类/构造函数是公共的。
那么有人设法在没有公众部分的情况下让这项工作正常进行吗?
在一个小的PowerShell构建脚本中,我构建并测试了一个.NET应用程序.
我现在想要在测试导致一个或多个失败时阻止脚本中的进一步步骤.
我试着像这样得到测试的结果:
$exitcode = dotnet test .\Domain.Tests
Write-Host "result $exitcode"
Run Code Online (Sandbox Code Playgroud)
但遗憾的是它没有返回退出代码表示成功我只是得到了测试测试说明.
有没有更好的方法然后解析失败的测试计数的字符串输出?
dotnet-test ×10
.net-core ×4
nunit ×4
.net ×3
azure-devops ×2
powershell ×2
.net-6.0 ×1
asp.net-core ×1
c# ×1
coverlet ×1
testing ×1
unit-testing ×1
xunit ×1