This repo is designed to help with the development of MSBuild Tasks and Targets. It provides an integrated Unit Test Framework which will allow you to debug your Tasks directly in the VSCode.
The project is split up into two separate projects , the first is the MSBuildSandbox.Tasks project. This is where you would create new Tasks and targets.
The second project is the MSBuildSandbox.Tests project. This is where the Unit tests can be added.
The sandbox contains two sample tests, one for a Task and one for a .target.
The Example.cs file contains a very basic MSBuild Task. It just returns
a result. The Test found in Tests.cs contains the unit test for this
Task. Task tests make use of the MockBuildEngine
class to fake that
the task is running inside an MSBuild process. This allows you to call the
Task directly! It also allows you to debug and step through your task during
development.
Looking at the example the first thing we do is create a MockBuildEngine
.
var engine = CreateMockEngine ();
We can then create the Task
we want to test and set the BuildEngine
property
to our MockBuildEngine
. At this point you can also set any other properties
the task requires if your task takes custom inputs.
var task = new Example () {
BuildEngine = engine,
};
We can then call the Task.Execute
method directly and Assert
the result to
make sure it executed correctly.
Assert.True (task.Execute ());
Once executed you could then check your Output
properties if you have any to
make sure they are set as expected. Or check for files that the Task
should
have created.
The test defines a project which we load in the unit test. The project imports
the MSBuildSandbox.targets
file along with the defined Tasks.
We then use the Example
task and the Message
task in a Target
in the unit test.
This allows us to call a Task
from a Target
and put breakpoints in the Task
so we can step through the code.