如何在Docker中运行.net单元测试而不安装整个SDK?

时间:2019-03-19 16:32:10

标签: c# docker asp.net-core

是否可以在不安装整个SDK的情况下在Docker中运行.net单元测试(xunit或其他)?

我想拥有一个最小的Docker映像,该映像将专门用于运行测试。

1 个答案:

答案 0 :(得分:3)

不。运行测试需要SDK。但是,可以使用图层从最终图像中删除此依赖性。例如,如果您的最终目标是仅拥有正在运行的应用程序,但是您想在运行容器之前先在容器中构建和测试,则可以执行以下操作:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
# do your build, test, publish

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
# copy published files from build-env

最后,您的映像将仅引用ASP.NET Core运行时,而不是SDK。但是,应该注意的是,这将首先在创建映像时运行测试,而不是在每次容器运行时都运行。不过,这实际上应该足够了,因为如果在构建过程中通过了测试,则最终映像中的已发布应用程序也将正常运行。确实不需要一遍又一遍地进行测试。但是,如果您想要一个完全用于测试的映像,则需要构建SDK映像。