我通过 Visual Studio 创建了 NUnit 项目并尝试在 Docker 中运行它。
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["TestProject1.csproj", "TestProject1/"]
RUN dotnet restore "TestProject1/TestProject1.csproj"
COPY . .
WORKDIR "/src/TestProject1"
RUN dotnet build "TestProject1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "TestProject1.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base as final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "test", "TestProject1.dll", "/TestAdapterPath:."]
我用
docker build -t tests .
构建了一个图像,最后,我运行了它,但它没有执行测试。如果没有最后一个参数,它也会显示 Additionally, path to test adapters can be specified using /TestAdapterPath command. Example /TestAdapterPath:<pathToCustomAdapters>.
。我不确定应该包含哪个参数来运行 dotnet test
还是我使用了错误的 sdk 映像?
PM> docker 运行测试
Microsoft (R) 测试执行命令行工具版本 17.7.1 (x64) 版权所有 (c) Microsoft Corporation。保留所有权利。
正在开始测试执行,请稍候... 共有 1 个测试文件与指定模式匹配。 /app/TestProject1.dll 中没有可用的测试。确保测试发现者和执行者已注册,并且平台和框架版本设置合适,然后重试。
namespace TestProject1
{
public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
public void Test1()
{
Assert.Pass();
}
}
}
Docker 文件是由 VS 自动生成的,我必须修剪该文件才能使其工作 -
dotnet test
构建并恢复项目,因此不需要构建和发布步骤。但我仍然不知道我的问题中的 Docker 出了什么问题。
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /app
COPY . .
RUN dotnet restore
ENTRYPOINT ["dotnet", "test"]
PM> docker 运行测试
确定要恢复的项目...
所有项目都是最新的以便恢复。
TestProject1 -> /app/bin/Debug/net7.0/TestProject1.dll 测试运行 /app/bin/Debug/net7.0/TestProject1.dll (.NETCoreApp,Version=v7.0) Microsoft (R) 测试执行命令行工具版本 17.7.1 (x64) 版权所有 (c) Microsoft Corporation。保留所有权利。
正在开始测试执行,请稍候... 共有 1 个测试文件符合指定模式。
通过了! - 失败:0,通过:1,跳过:0,总计:1,>持续时间:17 毫秒 - TestProject1.dll (net7.0)