Как запустить тесты в Dockerfile с помощью xunit - PullRequest
0 голосов
/ 03 мая 2019

Итак, у меня есть проект ASP.NET в папке (src) и тестовый проект в папке рядом с другой папкой (tests). То, чего я пытаюсь добиться - это иметь возможность запускать свои тесты и развертывать приложение с помощью Docker, однако я действительно застрял.

В данный момент в папке src находится Dockerfile, который создает приложение и прекрасно его развертывает. В папке tests есть также Dockerfile для тестового проекта, который должен просто запускать мои тесты.

tests/Dockerfile в настоящее время выглядит так:

FROM microsoft/dotnet:2.2.103-sdk AS build
WORKDIR /tests
COPY ["tests.csproj", "Tests/"]
RUN dotnet restore "Tests/tests.csproj"
WORKDIR /tests/Tests
COPY . .
RUN dotnet test

Но если я запускаю сборку Docker, тесты не пройдены, я полагаю, потому что отсутствует код для тестирования приложения. Я получаю много:

The type or namespace name 'MyService' could not be found (are you missing a using directive or an assembly reference?

У меня есть ссылка на проект в моем файле .csproj, в чем может быть проблема?

1 Ответ

0 голосов
/ 03 мая 2019

Ваш тестовый код ссылается на некоторые файлы (содержащие тип MyService), которые не были скопированы в изображение. Это происходит потому, что ваша инструкция COPY . . выполняется после инструкции WORKDIR /tests/Tests, поэтому вы копируете все, что находится внутри папки /tests/Tests, а не ссылочный код, который, согласно вашему описанию, находится в папке src.

Ваша проблема должна быть решена путем выполнения COPY . . во второй строке сразу после инструкции FROM. Таким образом, все необходимые файлы будут правильно скопированы в изображение. Если вы продолжите в том же духе, вы можете упростить ваш Dockerfile до чего-то подобного (не проверено):

FROM microsoft/dotnet:2.2.103-sdk AS build
COPY . .                       # Copy all files
WORKDIR /tests/Tests           # Go to tests directory
ENTRYPOINT ["dotnet", "test"]  # Run tests (this will perform a restore + build before launching the tests)
...