public static async void UsesCustomTestOrderer() { var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <CustomTestCaseOrderer>(runner.TestCaseOrderer); }
public static async void TestClassCanHavePublicAndPrivateConstructor() { var testCase = TestData.XunitTestCase <ClassWithMixedConstructors>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.Null(runner.RunTestMethodAsync_AggregatorResult); }
public static async void TestClassCanHaveStaticConstructor() { var testCase = Mocks.XunitTestCase <ClassWithStaticConstructor>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.Null(runner.RunTestMethodAsync_AggregatorResult); }
public static async void ClassCannotBeDecoratedWithICollectionFixture() { var testCase = Mocks.XunitTestCase <ClassWithCollectionFixture>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult); Assert.Equal("A test class may not be decorated with ICollectionFixture<> (decorate the test collection class instead).", runner.RunTestMethodAsync_AggregatorResult.Message); }
public static async void TestClassCannotHaveMoreThanOneConstructor() { var testCase = Mocks.XunitTestCase <ClassWithTwoConstructors>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult); Assert.Equal("A test class may only define a single public constructor.", runner.RunTestMethodAsync_AggregatorResult.Message); }
public static async void DisposesFixtures() { var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); var fixtureUnderTest = runner.ClassFixtureMappings.Values.OfType <FixtureUnderTest>().Single(); Assert.True(fixtureUnderTest.Disposed); }
public static async void UnresolvedConstructorParameterOnClassFixture_ReturnsError() { var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithDependency>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); var ex = Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult); Assert.Equal("Class fixture type 'XunitTestClassRunnerTests+ClassFixtureWithCollectionFixtureDependency' had one or more unresolved constructor arguments: DependentCollectionFixture collectionFixture", ex.Message); }
public static async void CanLogSinkMessageFromClassFixture() { var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithMessageSinkDependency>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <IDiagnosticMessage>()); Assert.Equal("ClassFixtureWithMessageSinkDependency constructor message", diagnosticMessage.Message); }
public static async void MultiplePublicConstructorsOnClassFixture_ReturnsError() { var testCase = Mocks.XunitTestCase <TestClassWithMultiCtorClassFixture>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); var ex = Assert.IsType <TestClassException>(runner.RunTestMethodAsync_AggregatorResult); Assert.Equal("Class fixture type 'XunitTestClassRunnerTests+ClassFixtureWithMultipleConstructors' may only define a single public constructor.", ex.Message); }
public static async void SettingUnknownTestCaseOrderLogsDiagnosticMessage() { var testCase = Mocks.XunitTestCase <TestClassWithUnknownTestCaseOrderer>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <MockTestCaseOrderer>(runner.TestCaseOrderer); var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <IDiagnosticMessage>()); Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for class-level test case orderer on test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithUnknownTestCaseOrderer'", diagnosticMessage.Message); }
public static async void SettingTestCaseOrdererWithThrowingConstructorLogsDiagnosticMessage() { var testCase = Mocks.XunitTestCase <TestClassWithCtorThrowingTestCaseOrder>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <MockTestCaseOrderer>(runner.TestCaseOrderer); var diagnosticMessage = Assert.Single(runner.DiagnosticMessages.Cast <IDiagnosticMessage>()); Assert.StartsWith("Class-level test case orderer 'XunitTestClassRunnerTests+TestCaseOrderer+MyCtorThrowingTestCaseOrderer' for test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithCtorThrowingTestCaseOrder' threw 'System.DivideByZeroException' during construction:", diagnosticMessage.Message); }
public static async void CreatesFixturesFromClassAndCollection() { var collection = new TestCollection(Mocks.TestAssembly(), Reflector.Wrap(typeof(CollectionUnderTest)), null); var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing", collection); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.Collection(runner.ClassFixtureMappings.OrderBy(mapping => mapping.Key.Name), mapping => Assert.IsType <FixtureUnderTest>(mapping.Value), mapping => Assert.IsType <object>(mapping.Value) ); }
public static async void CanInjectMessageSinkIntoClassFixture() { var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithMessageSinkDependency>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.Null(runner.RunTestMethodAsync_AggregatorResult); var classFixture = runner.ClassFixtureMappings.Values.OfType <ClassFixtureWithMessageSinkDependency>().Single(); Assert.NotNull(classFixture.MessageSink); Assert.Same(runner.DiagnosticMessageSink, classFixture.MessageSink); }
public static async void CanInjectCollectionFixtureIntoClassFixture() { var testCase = Mocks.XunitTestCase <TestClassWithClassFixtureWithDependency>("Passing"); var collectionFixture = new DependentCollectionFixture(); var runner = TestableXunitTestClassRunner.Create(testCase, collectionFixture); await runner.RunAsync(); Assert.Null(runner.RunTestMethodAsync_AggregatorResult); var classFixture = runner.ClassFixtureMappings.Values.OfType <ClassFixtureWithCollectionFixtureDependency>().Single(); Assert.Same(collectionFixture, classFixture.CollectionFixture); }
public static async void SettingUnknownTestCaseOrderLogsDiagnosticMessage() { var spy = SpyMessageSink.Capture(); TestContext.Current !.DiagnosticMessageSink = spy; var testCase = TestData.XunitTestCase <TestClassWithUnknownTestCaseOrderer>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <MockTestCaseOrderer>(runner.RunTestMethodsAsync_TestCaseOrderer); var diagnosticMessage = Assert.Single(spy.Messages.Cast <_DiagnosticMessage>()); Assert.Equal("Could not find type 'UnknownType' in UnknownAssembly for class-level test case orderer on test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithUnknownTestCaseOrderer'", diagnosticMessage.Message); }
public static async void PassesFixtureValuesToConstructor() { var testCase = Mocks.XunitTestCase <ClassUnderTest>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase, 42, "Hello, world!", 21.12m); await runner.RunAsync(); var args = Assert.Single(runner.ConstructorArguments); Assert.Collection(args, arg => Assert.IsType <FixtureUnderTest>(arg), arg => Assert.Equal("Hello, world!", arg), arg => Assert.Equal(21.12m, arg) ); }
public static async void SettingTestCaseOrdererWithThrowingConstructorLogsDiagnosticMessage() { var spy = SpyMessageSink.Capture(); TestContext.Current !.DiagnosticMessageSink = spy; var testCase = TestData.XunitTestCase <TestClassWithCtorThrowingTestCaseOrder>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); await runner.RunAsync(); Assert.IsType <MockTestCaseOrderer>(runner.RunTestMethodsAsync_TestCaseOrderer); var diagnosticMessage = Assert.Single(spy.Messages.Cast <_DiagnosticMessage>()); Assert.StartsWith("Class-level test case orderer 'XunitTestClassRunnerTests+TestCaseOrderer+MyCtorThrowingTestCaseOrderer' for test class 'XunitTestClassRunnerTests+TestCaseOrderer+TestClassWithCtorThrowingTestCaseOrder' threw 'System.DivideByZeroException' during construction: Attempted to divide by zero.", diagnosticMessage.Message); }
public static async void DisposeAndAsyncLifetimeShouldBeCalledInTheRightOrder() { var testCase = Mocks.XunitTestCase <TestClassForFixtureAsyncLifetimeAndDisposableUnderTest>("Passing"); var runner = TestableXunitTestClassRunner.Create(testCase); var runnerSessionTask = runner.RunAsync(); await Task.Delay(500); var fixtureUnderTest = runner.ClassFixtureMappings.Values.OfType <FixtureAsyncLifetimeAndDisposableUnderTest>().Single(); Assert.True(fixtureUnderTest.DisposeAsyncCalled); Assert.False(fixtureUnderTest.Disposed); fixtureUnderTest.DisposeAsyncSignaler.SetResult(true); await runnerSessionTask; Assert.True(fixtureUnderTest.Disposed); }