如何在docker容器中运行.NET单元测试

ddc*_*432 3 .net docker .net-core visual-studio-2017

我有一个包含MSTest单元测试的.NET Core应用程序.使用此Dockerfile执行所有测试的命令是什么?

FROM microsoft/dotnet:1.1-runtime
ARG source
COPY . .
ENTRYPOINT ["dotnet", "test", "Unittests.csproj"]
Run Code Online (Sandbox Code Playgroud)

文件夹结构是:

/Dockerfile
/Unittests.csproj
/tests/*.cs
Run Code Online (Sandbox Code Playgroud)

Ily*_*kov 7

使用安装了.NET Core SDK的基本映像.例如:

microsoft/dotnet
microsoft/dotnet:1.1.2-sdk
Run Code Online (Sandbox Code Playgroud)

然后运行一个dotnet test控制台命令.这就是为什么需要基于SDK的图像 - 如果dotnet test没有SDK,则无法在基于运行时的映像中运行.这是一个完全可行的Dockerfile例子:

FROM microsoft/dotnet

WORKDIR /app
COPY . .

RUN dotnet restore

# run tests on docker build
RUN dotnet test

# run tests on docker run
ENTRYPOINT ["dotnet", "test"]
Run Code Online (Sandbox Code Playgroud)

RUN 命令在docker镜像构建过程中执行.

ENTRYPOINT docker容器启动时执行命令.

  • 任何人都知道如何使用“运行 dotnet 测试”中的退出代码使构建失败 (2认同)
  • @eschneider :“test”参数是“dotnet”命令的命令行参数。`RUN` 和 `ENTRYPOINT` 命令在这个 Dockerfile 中做同样的事情。区别仅在于*何时*运行测试。https://docs.docker.com/engine/reference/builder/#entrypoint (2认同)
  • @JasonRowe 使构建失败设置 Environment.Exit(yourCode) 测试完成后。检查 CI 脚本中的退出代码。 (2认同)