public IEnumerable <IXunitTestCase> Discover(
            ITestFrameworkDiscoveryOptions discoveryOptions,
            ITestMethod testMethod,
            IAttributeInfo factAttribute)
        {
            var skipReason = EvaluateSkipConditions(testMethod);

            var isTheory = false;
            IXunitTestCaseDiscoverer innerDiscoverer;

            if (testMethod.Method.GetCustomAttributes(typeof(TheoryAttribute)).Any())
            {
                isTheory        = true;
                innerDiscoverer = new TheoryDiscoverer(_diagnosticMessageSink);
            }
            else
            {
                innerDiscoverer = new FactDiscoverer(_diagnosticMessageSink);
            }

            var testCases = innerDiscoverer
                            .Discover(discoveryOptions, testMethod, factAttribute)
                            .Select(testCase => new SkipReasonTestCase(isTheory, skipReason, testCase));

            return(testCases);
        }
Example #2
0
    public async void FactWithoutParameters_ReturnsTestCaseThatRunsFact()
    {
        var discoverer = new FactDiscoverer();
        var testMethod = Mocks.TestMethod <ClassUnderTest>("FactWithNoParameters");

        var testCases = await discoverer.Discover(options, testMethod, factAttribute);

        var testCase = Assert.Single(testCases);
        await testCase.RunAsync(messageBus, new object[0], aggregator, cancellationTokenSource);

        Assert.Single(messageBus.Messages.OfType <_TestPassed>());
    }
Example #3
0
    public async void GenericFact_ReturnsTestCaseWhichThrows()
    {
        var discoverer = new FactDiscoverer();
        var testMethod = Mocks.TestMethod <ClassUnderTest>("GenericFact");

        var testCases = await discoverer.Discover(options, testMethod, factAttribute);

        var testCase = Assert.Single(testCases);
        await testCase.RunAsync(messageBus, new object[0], aggregator, cancellationTokenSource);

        var failed = Assert.Single(messageBus.Messages.OfType <_TestFailed>());

        Assert.Equal(typeof(InvalidOperationException).FullName, failed.ExceptionTypes.Single());
        Assert.Equal("[Fact] methods are not allowed to be generic.", failed.Messages.Single());
    }
    public async void FactWithParameters_ReturnsTestCaseWhichThrows()
    {
        var discoverer = new FactDiscoverer();
        var testMethod = Mocks.TestMethod(typeof(ClassUnderTest), "FactWithParameters");

        var testCases = discoverer.Discover(options, testMethod, factAttribute);

        var testCase = Assert.Single(testCases);
        await testCase.RunAsync(messageBus, new object[0], aggregator, cancellationTokenSource);

        var failed = Assert.Single(messageBus.Messages.OfType <ITestFailed>());

        Assert.Equal(typeof(InvalidOperationException).FullName, failed.ExceptionTypes.Single());
        Assert.Equal("[Fact] methods are not allowed to have parameters. Did you mean to use [Theory]?", failed.Messages.Single());
    }
Example #5
0
 public StaFactDiscoverer(IMessageSink diagnosticMessageSink)
 {
     factDiscoverer = new FactDiscoverer(diagnosticMessageSink);
 }
 public WpfFactDiscoverer(IMessageSink diagnosticMessageSink)
 {
     _factDiscoverer = new FactDiscoverer(diagnosticMessageSink);
 }
 /// <summary>
 /// Creates a new instance of the <see cref="ScenarioAttributeDiscoverer"/> type.
 /// </summary>
 /// <param name="diagnosticMessageSink"> The message sink used to send diagnostic messages. </param>
 public ScenarioAttributeDiscoverer(IMessageSink diagnosticMessageSink)
 {
     DecoratedDiscoverer = new FactDiscoverer(diagnosticMessageSink);
     MessageSink         = diagnosticMessageSink ?? throw new ArgumentNullException(nameof(diagnosticMessageSink));
 }
 public RemoteHostFactDiscoverer(IMessageSink diagnosticMessageSink)
 {
     _factDiscoverer = new FactDiscoverer(diagnosticMessageSink);
 }
Example #9
0
 /// <summary>
 /// Initialises a new instance of the <see cref="UserFactDiscoverer"/> class.
 /// </summary>
 /// <param name="diagnosticMessageSink">The message sink used to send diagnostic messages</param>
 public UserFactDiscoverer(IMessageSink diagnosticMessageSink)
 {
     this.diagnosticMessageSink = diagnosticMessageSink;
     factDiscoverer             = new FactDiscoverer(diagnosticMessageSink);
 }
 public ForegroundFactDiscoverer(IMessageSink diagnosticMessageSink)
 {
     _inner = new FactDiscoverer(diagnosticMessageSink);
 }