Skip to content

Latest commit

 

History

History
109 lines (69 loc) · 2.57 KB

hacking.md

File metadata and controls

109 lines (69 loc) · 2.57 KB

Building

.NET Framework

dotnet publish -f net461

.NET Core

dotnet publish -f netcoreapp2.0

Mono

msbuild /p:TargetFramework=net461 /t:Restore
msbuild /p:TargetFramework=net461 /t:Rebuild
msbuild /p:TargetFramework=net461 /t:Publish

Continuous Integration

Appveyor (Windows)

Build status

net461 build and tests

netcoreapp2.0 build and tests

Travis (Linux)

Build Status

net461 build and tests (Mono)

netcoreapp2.0 build and tests (.NET Core)

Design

Program

The Program namespace contains the Main() program code that sets up error handlers, parses command line arguments, and takes appropriate top-level actions.

The initial parent testrunner process runs the test file(s) specified on the command-line by reinvoking separate child testrunner processes for each. Child processes are instructed via command-line options to produce output in a machine-readable format, which the parent interprets and combines into a unified event stream for final analysis and output.

Runners

Child processes run test files by delegating to runner routines in the Runners namespace. These routines activate test assembly .config files, locate test classes, and run initialize, test, and cleanup methods in the right order.

MSTest

The runners interpret and interact with test assemblies through types in the MSTest namespace, which use reflection to discover, bind, and interact with test assembly elements at runtime. These elements include the test assemblies themselves, test classes, initialization, test, and cleanup methods, MSTest attributes, and a TestContext implementation.

Events

As the runners execute tests, they emit events from the Events namespace...

EventHandlers

...into a pipeline of event handlers in the EventHandlers namespace. Individual handlers focus on single supporting responsibilities like measurement, analysis, aggregation, and output. Distributing responsibility across the runners and handlers keeps down their individual complexity.

Results

As tests run, event handlers record results in types from the Results namespace.

Infrastructure

The Infrastructure namespace contains general support functionality used throughout the rest of the application.