<PackageReference Include="NUnit" Version="3.0.0-rc-3" />

TestContext

public class TestContext
Provide the context information of the current test. This is an adapter for the internal ExecutionContext class, hiding the internals from the user test.
using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; using System; using System.IO; namespace NUnit.Framework { public class TestContext { public class TestAdapter { private readonly Test _test; public string ID => _test.Id; public string Name => _test.Name; public string MethodName { get { if (!(_test is TestMethod)) return null; return _test.Method.Name; } } public string FullName => _test.FullName; public string ClassName => _test.ClassName; public IPropertyBag Properties => _test.Properties; public TestAdapter(Test test) { _test = test; } } public class ResultAdapter { private readonly TestResult _result; public ResultState Outcome => _result.ResultState; public string Message => _result.Message; public virtual string StackTrace => _result.StackTrace; public int FailCount => _result.FailCount; public int PassCount => _result.PassCount; public int SkipCount => _result.SkipCount; public int InconclusiveCount => _result.InconclusiveCount; public ResultAdapter(TestResult result) { _result = result; } } private readonly TestExecutionContext _testExecutionContext; private TestAdapter _test; private ResultAdapter _result; public static TestContext CurrentContext => new TestContext(TestExecutionContext.CurrentContext); public static TextWriter Out => TestExecutionContext.CurrentContext.OutWriter; public TestAdapter Test => _test ?? (_test = new TestAdapter(_testExecutionContext.CurrentTest)); public ResultAdapter Result => _result ?? (_result = new ResultAdapter(_testExecutionContext.CurrentResult)); public string TestDirectory => AssemblyHelper.GetDirectoryName(_testExecutionContext.CurrentTest.TypeInfo.Assembly); public string WorkDirectory => _testExecutionContext.WorkDirectory; public Randomizer Random => _testExecutionContext.RandomGenerator; public TestContext(TestExecutionContext testExecutionContext) { _testExecutionContext = testExecutionContext; } public static void Write(bool value) { Out.Write(value); } public static void Write(char value) { Out.Write(value); } public static void Write(char[] value) { Out.Write(value); } public static void Write(double value) { Out.Write(value); } public static void Write(int value) { Out.Write(value); } public static void Write(long value) { Out.Write(value); } public static void Write(decimal value) { Out.Write(value); } public static void Write(object value) { Out.Write(value); } public static void Write(float value) { Out.Write(value); } public static void Write(string value) { Out.Write(value); } [CLSCompliant(false)] public static void Write(uint value) { Out.Write(value); } [CLSCompliant(false)] public static void Write(ulong value) { Out.Write(value); } public static void Write(string format, object arg1) { Out.Write(format, arg1); } public static void Write(string format, object arg1, object arg2) { Out.Write(format, arg1, arg2); } public static void Write(string format, object arg1, object arg2, object arg3) { Out.Write(format, arg1, arg2, arg3); } public static void Write(string format, params object[] args) { Out.Write(format, args); } public static void WriteLine() { Out.WriteLine(); } public static void WriteLine(bool value) { Out.WriteLine(value); } public static void WriteLine(char value) { Out.WriteLine(value); } public static void WriteLine(char[] value) { Out.WriteLine(value); } public static void WriteLine(double value) { Out.WriteLine(value); } public static void WriteLine(int value) { Out.WriteLine(value); } public static void WriteLine(long value) { Out.WriteLine(value); } public static void WriteLine(decimal value) { Out.WriteLine(value); } public static void WriteLine(object value) { Out.WriteLine(value); } public static void WriteLine(float value) { Out.WriteLine(value); } public static void WriteLine(string value) { Out.WriteLine(value); } [CLSCompliant(false)] public static void WriteLine(uint value) { Out.WriteLine(value); } [CLSCompliant(false)] public static void WriteLine(ulong value) { Out.WriteLine(value); } public static void WriteLine(string format, object arg1) { Out.WriteLine(format, arg1); } public static void WriteLine(string format, object arg1, object arg2) { Out.WriteLine(format, arg1, arg2); } public static void WriteLine(string format, object arg1, object arg2, object arg3) { Out.WriteLine(format, arg1, arg2, arg3); } public static void WriteLine(string format, params object[] args) { Out.WriteLine(format, args); } } }