12345678910111213141516171819202122232425262728293031323334 |
- using System;
- using System.Diagnostics;
- using System.Reflection;
- using Terminal.Gui;
- using Xunit;
- // Since Application is a singleton we can't run tests in parallel
- [assembly: CollectionBehavior (DisableTestParallelization = true)]
- // This class enables test functions annotaed with the [AutoInitShutdown] attribute to
- // automatically call Application.Init before called and Application.Shutdown after
- //
- // This is necessary because a) Application is a singleton and Init/Shutdown must be called
- // as a pair, and b) all unit test functions should be atomic.
- [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
- public class AutoInitShutdown : Xunit.Sdk.BeforeAfterTestAttribute {
- static bool _init = false;
- public override void Before (MethodInfo methodUnderTest)
- {
- if (_init) {
- throw new InvalidOperationException ("After did not run.");
- }
- Application.Init (new FakeDriver (), new FakeMainLoop (() => FakeConsole.ReadKey (true)));
- _init = true;
- }
- public override void After (MethodInfo methodUnderTest)
- {
- Application.Shutdown ();
- _init = false;
- }
- }
|