2017-05-30 86 views
2

我有一個包含MSTest單元測試的.NET核心應用程序。使用這個Dockerfile執行所有測試的命令是什麼?如何在碼頭集裝箱中運行.NET單元測試

FROM microsoft/dotnet:1.1-runtime 
ARG source 
COPY . . 
ENTRYPOINT ["dotnet", "test", "Unittests.csproj"] 

文件夾的結構是:

/Dockerfile 
/Unittests.csproj 
/tests/*.cs 

回答

1

使用安裝有.NET核心SDK基礎圖像。例如:

microsoft/dotnet 
microsoft/dotnet:1.1.2-sdk 

然後運行一個dotnet test控制檯命令。這就是爲什麼需要基於SDK的映像 - 在無SDK的基於運行時的映像中不能運行dotnet test。這裏是一個完全可行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命令期間搬運工圖像生成過程被執行。

ENTRYPOINT命令在docker容器啓動時執行。

+0

任何人都知道如何使用「運行dotnet測試」中的退出代碼來編譯失敗 –

+0

有人可以澄清「test」參數是什麼嗎?是單元測試方法還是單元測試項目名稱,還需要區分Run和Entry點。 – eschneider

+1

@eschneider:「test」參數是「dotnet」命令的命令行填充。這個'RUN'和'ENTRYPOINT'命令在這個Dockerfile中做同樣的事情。 *測試運行時,區別僅在於*。 https://docs.docker.com/engine/reference/builder/#entrypoint –