Table of Contents

Namespace NUnit.Framework.Internal.Execution

Classes

CompositeWorkItem

A CompositeWorkItem represents a test suite and encapsulates the execution of the suite as well as all its child tests.

CompositeWorkItem.OneTimeTearDownWorkItem

OneTimeTearDownWorkItem represents the cleanup and one-time teardown phase of a CompositeWorkItem

Event

NUnit.Core.Event is the abstract base for all stored events. An Event is the stored representation of a call to the ITestListener interface and is used to record such calls or to queue them for forwarding on another thread or at a later time.

EventListenerTextWriter

EventListenerTextWriter sends text output to the currently active ITestEventListener in the form of a TestOutput object. If no event listener is active in the context, or if there is no context, the output is forwarded to the supplied default writer.

EventPump

EventPump pulls events out of an EventQueue and sends them to a listener. It is used to send events back to the client without using the CallContext of the test runner thread.

EventQueue

Implements a queue of work items each of which is queued as a WaitCallback.

MainThreadWorkItemDispatcher

MainThreadWorkItemDispatcher handles execution of WorkItems by directly executing them on the main thread. This is different from the SimpleWorkItemDispatcher where the work item is dispatched onto its own thread.

ParallelWorkItemDispatcher

ParallelWorkItemDispatcher handles execution of work items by queuing them for worker threads to process.

QueuingEventListener

QueuingEventListener uses an EventQueue to store any events received on its EventListener interface.

SimpleWorkItem

A SimpleWorkItem represents a single test case and is marked as completed immediately upon execution. This class is also used for skipped or ignored test suites.

SimpleWorkItemDispatcher

SimpleWorkItemDispatcher handles execution of WorkItems by directly executing them. It is provided so that a dispatcher is always available in the context, thereby simplifying the code needed to run child tests.

StaticMethodValidator

Checks whether the method to execute is static.

TestFinishedEvent

TestFinishedEvent holds information needed to call the TestFinished method.

TestMessageEvent

TestMessageEvent holds information needed to call the SendMessage method.

TestOutputEvent

TestOutputEvent holds information needed to call the TestOutput method.

TestStartedEvent

TestStartedEvent holds information needed to call the TestStarted method.

TestWorker

A TestWorker pulls work items from a queue and executes them.

TextCapture

The TextCapture class intercepts console output and writes it to the current execution context, if one is present on the thread. If no execution context is found, the output is written to a default destination, normally the original destination of the intercepted output.

WorkItem

A WorkItem may be an individual test case, a fixture or a higher level grouping of tests. All WorkItems inherit from the abstract WorkItem class, which uses the template pattern to allow derived classes to perform work in whatever way is needed.

A WorkItem is created with a particular TestExecutionContext and is responsible for re-establishing that context in the current thread before it begins or resumes execution.

WorkItemBuilder

WorkItemBuilder class knows how to build a tree of work items from a tree of tests

WorkItemQueue

A WorkItemQueue holds work items that are ready to be run, either initially or after some dependency has been satisfied.

WorkShift

The dispatcher needs to do different things at different, non-overlapped times. For example, non-parallel tests may not be run at the same time as parallel tests. We model this using the metaphor of a working shift. The WorkShift class associates one or more WorkItemQueues with one or more TestWorkers.

Work in the queues is processed until all queues are empty and all workers are idle. Both tests are needed because a worker that is busy may end up adding more work to one of the queues. At that point, the shift is over and another shift may begin. This cycle continues until all the tests have been run.

Interfaces

IMethodValidator

Validates method to execute.

IWorkItemDispatcher

An IWorkItemDispatcher handles execution of work items.

Enums

EventPumpState

The EventPumpState enum represents the state of an EventPump.

ParallelExecutionStrategy

Enumeration representing the strategy to follow in executing a work item. The value is only relevant when running under the parallel dispatcher.

WorkItemQueueState

WorkItemQueueState indicates the current state of a WorkItemQueue

WorkItemState

The current state of a work item

Delegates

ShiftChangeEventHandler

Handler for ShiftChange events.

TestWorker.TestWorkerEventHandler

Event handler for TestWorker events