Login

Your Name:(required)

Your Password:(required)

Join Us

Your Name:(required)

Your Email:(required)

Your Message :

Run .NET tests in a container

Author: Polly

Apr. 29, 2024

61 0 0

Tags: Measurement & Analysis Instruments

Run .NET tests in a container

Run .NET tests in a container

Complete all the previous sections of this guide, starting with Containerize a .NET application.

Please visit our website for more information on this topic.

Testing is an essential part of modern software development. Testing can mean a lot of things to different development teams. There are unit tests, integration tests and end-to-end testing. In this guide you take a look at running your unit tests in Docker when developing and when building.

The sample application already has an xUnit test inside the tests directory. When developing locally, you can use Compose to run your tests.

Run the following command in the docker-dotnet-sample directory to run the tests inside a container.

$

docker compose run --build --rm server dotnet

test

/source/tests

You should see output that contains the following.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.

Passed! - Failed: 0, Passed: 1, Skipped: 0, Total: 1, Duration: < 1 ms - /source/tests/bin/Debug/net6.0/tests.dll (net6.0)

To learn more about the command, see docker compose run.

To run your tests when building, you need to update your Dockerfile. You can create a new test stage that runs the tests, or run the tests in the existing build stage. For this guide, update the Dockerfile to run the tests in the build stage.

The following is the updated Dockerfile.

# syntax=docker/dockerfile:1

FROM

--platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build

ARG

TARGETARCH

COPY

. /source

WORKDIR

/source/src

RUN

--mount

=

type

=

cache,id

=

nuget,target

=

/root/.nuget/packages

\

dotnet publish -a

${

TARGETARCH

/amd64/x64

}

--use-current-runtime --self-contained

false

-o /app

RUN

dotnet

test

/source/tests

FROM

mcr.microsoft.com/dotnet/sdk:6.0-alpine AS development

COPY

. /source

WORKDIR

/source/src

CMD

dotnet run --no-launch-profile

FROM

mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS final

WORKDIR

/app

COPY

--from

=

build /app .

ARG

UID

=

10001

RUN

adduser

\

--disabled-password

\

Additional reading:
Exploring the Cutting-Edge Technology of Nodal Seismometers

With competitive price and timely delivery, Cell Instruments sincerely hope to be your supplier and partner.

--gecos
The 7 Best Water Leak Detectors for Your Home

""

\

--home

"/nonexistent"

\

--shell

"/sbin/nologin"

\

--no-create-home

\

--uid

"

${

UID

}

"

\

appuser

USER

appuser

ENTRYPOINT

[

"dotnet"

,

"myWebApp.dll"

]

Run the following command to build an image using the build stage as the target and view the test results. Include --progress=plain to view the build output, --no-cache to ensure the tests always run, and --target build to target the build stage.

$

docker build -t dotnet-docker-image-test --progress

=

plain --no-cache --target build .

You should see output containing the following.

#

11

[

build 5/5

]

RUN dotnet

test

/source/tests

#

11

1.564 Determining projects to restore...

#

11

3.421 Restored /source/src/myWebApp.csproj

(

in 1.02 sec

)

.

#

11

19.42 Restored /source/tests/tests.csproj

(

in 17.05 sec

)

.

#

11

27.91 myWebApp -> /source/src/bin/Debug/net6.0/myWebApp.dll

#

11

28.47 tests -> /source/tests/bin/Debug/net6.0/tests.dll

#

11

28.49 Test run

for

/source/tests/bin/Debug/net6.0/tests.dll

(

.NETCoreApp,Version

=

v6.0

)

#

11

28.67 Microsoft

(

R

)

Test Execution Command Line Tool Version 17.3.3

(

x64

)

#

11

28.67 Copyright

(

c

)

Microsoft Corporation. All rights reserved.

#

11

28.68

#

11

28.97 Starting

test

execution, please wait...

#

11

29.03 A total of

1

test

files matched the specified pattern.

#

11

32.07

#

11

32.08 Passed! - Failed: 0, Passed: 1, Skipped: 0, Total: 1, Duration: <

1

ms - /source/tests/bin/Debug/net6.0/tests.dll

(

net6.0

)

#

11

DONE 32.2s

To learn more about building and running tests, see the Build with Docker guide.

In this section, you learned how to run tests when developing locally using Compose and how to run tests when building your image.

Related information:

Next, you’ll learn how to set up a CI/CD pipeline using GitHub Actions.

If you are looking for more details, kindly visit Container Tester.

Comments

0

0/2000