public void Async40AcceptanceTest()
    {
        string code = @"
            using System;
            using System.Threading;
            using System.Threading.Tasks;
            using Xunit;

            public class TestClass
            {
                [Fact]
                public Task TestMethod()
                {
                    return Task.Factory.StartNew(() =>
                    {
                        Thread.Sleep(1);
                    })
                    .ContinueWith(_ =>
                    {
                        Assert.True(false);
                    });
                }
            }
        ";

        XmlNode assemblyNode = Execute(code);

        XmlNode testNode    = ResultXmlUtility.AssertResult(assemblyNode, "Fail", "TestClass.TestMethod");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(TrueException).FullName);
    }
    public void TheoryViaDataAcceptanceTest()
    {
        string code = @"
                using Xunit.Extensions;

                public class Stub
                {
                    [Theory]
                    [InlineData(1, ""hello"", 2.3)]
                    [InlineData(42, ""world"", 21.12)]
                    public void PassingTestData(int foo, string bar, double baz)
                    {
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode1 = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode1, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode1, "name", "Stub." + @"PassingTestData(foo: 1, bar: ""hello"", baz: 2.3)");

        XmlNode testNode2 = ResultXmlUtility.GetResult(assemblyNode, 0, 1);

        ResultXmlUtility.AssertAttribute(testNode2, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode2, "name", "Stub." + @"PassingTestData(foo: 42, bar: ""world"", baz: 21.12)");
    }
    public void TheoryWithNoDataAttributes()
    {
        string code = @"
                using Xunit.Extensions;

                public class Stub
                {
                    [Theory]
                    public void TheoryMethod(int x)
                    {
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode, "result", "Fail");
        ResultXmlUtility.AssertAttribute(testNode, "name", "Stub.TheoryMethod");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(InvalidOperationException).FullName);
        XmlNode messageNode = failureNode.SelectSingleNode("message");

        Assert.Equal("System.InvalidOperationException : No data found for Stub.TheoryMethod", messageNode.InnerText);
    }
Esempio n. 4
0
        public void CallbackIncludesStartMessages()
        {
            const string code = @"
                    using Xunit;

                    public class TestClass
                    {
                        [Fact] public void TestMethod1() {}
                        [Fact] public void TestMethod2() {}
                        [Fact] public void TestMethod3() {}
                    }";

            using (MockAssembly assembly = new MockAssembly())
            {
                assembly.Compile(code);

                List <XmlNode> nodes = new List <XmlNode>();

                using (ExecutorWrapper wrapper = new ExecutorWrapper(assembly.FileName, null, false))
                    wrapper.RunTests("TestClass",
                                     new List <string> {
                        "TestMethod1"
                    },
                                     node => { nodes.Add(node); return(true); });

                Assert.Equal(3, nodes.Count);
                Assert.Equal("start", nodes[0].Name);  // <start>
                ResultXmlUtility.AssertAttribute(nodes[0], "name", "TestClass.TestMethod1");
                ResultXmlUtility.AssertAttribute(nodes[0], "type", "TestClass");
                ResultXmlUtility.AssertAttribute(nodes[0], "method", "TestMethod1");
                Assert.Equal("test", nodes[1].Name);
                Assert.Equal("class", nodes[2].Name);
            }
        }
 public void AssemblyFilenameInXmlMatchesOriginallyPassedNameToExecutor()
 {
     using (MockAssembly mockAssembly = new MockAssembly())
     {
         mockAssembly.Compile("");
         XmlNode assemblyNode = mockAssembly.Run(null);
         ResultXmlUtility.AssertAttribute(assemblyNode, "name", mockAssembly.FileName);
     }
 }
    public void TestCommandReturnsStartXml_WithDisplayName()
    {
        MethodInfo         method  = typeof(TestMethodCommandClass).GetMethod("TestMethod");
        Mock <TestCommand> command = new Mock <TestCommand>(Reflector.Wrap(method), "Display Name!", 0);

        command.CallBase = true;

        XmlNode result = command.Object.ToStartXml();

        Assert.Equal("start", result.Name);
        ResultXmlUtility.AssertAttribute(result, "name", "Display Name!");
        ResultXmlUtility.AssertAttribute(result, "type", typeof(TestMethodCommandClass).FullName);
        ResultXmlUtility.AssertAttribute(result, "method", "TestMethod");
    }
    public void NamedFailingTest()
    {
        string code = codeHeader + @"
                public class ExampleSpecUsage
                {
                    [Spec(""Failing specification"")]
                    public void Failing()
                    {
                        Assert.True(false);
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code);

        XmlNode resultNode = ResultXmlUtility.GetResult(assemblyNode);

        ResultXmlUtility.AssertAttribute(resultNode, "result", "Fail");
        ResultXmlUtility.AssertAttribute(resultNode, "name", "Failing specification");
    }
Esempio n. 8
0
    public void FactMethodsCannotHaveArguments()
    {
        string code = @"
            using System;
            using Xunit;

            public class MockTestClass
            {
                [Fact] public void FactWithParameters(int x) { }
            }
        ";

        XmlNode assemblyNode = Execute(code);

        XmlNode testNode    = ResultXmlUtility.AssertResult(assemblyNode, "Fail", "MockTestClass.FactWithParameters");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(InvalidOperationException).FullName);
        Assert.Equal("System.InvalidOperationException : Fact method MockTestClass.FactWithParameters cannot have parameters", failureNode.SelectSingleNode("message").InnerText);
    }
    public void NamedSkippedTest()
    {
        string code = codeHeader + @"
                public class ExampleSpecUsage
                {
                    [Spec(""Skipped specification"", Skip=""Failing, not sure why..."")]
                    public void Skippy()
                    {
                        Assert.False(true);
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code);

        XmlNode resultNode = ResultXmlUtility.GetResult(assemblyNode);

        ResultXmlUtility.AssertAttribute(resultNode, "result", "Skip");
        ResultXmlUtility.AssertAttribute(resultNode, "name", "Skipped specification");
    }
    public void ThrowingDataAttributeAcceptanceTest()
    {
        string code = @"
            using System;
            using System.Collections.Generic;
            using System.Reflection;
            using Xunit;
            using Xunit.Extensions;

            public class MisbehavingTestClass
            {
                [Theory, MisbehavedData]
                public void TheoryWithMisbehavingData(string a)
                {
                    Assert.True(true);
                }
            }

            public class MisbehavedDataAttribute : DataAttribute
            {
                public override IEnumerable<object[]> GetData(MethodInfo method, Type[] paramTypes)
                {
                    throw new Exception();
                }
            }
        ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode, "result", "Fail");
        ResultXmlUtility.AssertAttribute(testNode, "name", "MisbehavingTestClass.TheoryWithMisbehavingData");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(InvalidOperationException).FullName);
        XmlNode messageNode = failureNode.SelectSingleNode("message");

        Assert.Contains("System.InvalidOperationException : An exception was thrown while getting data for theory MisbehavingTestClass.TheoryWithMisbehavingData:", messageNode.InnerText);
    }
Esempio n. 11
0
    public void UsesSingleInstanceOfFixtureDataForAllTests()
    {
        string code =
            @"
                using System;
                using System.Diagnostics;
                using Xunit;

                public class TestFixtureTest : IUseFixture<object>
                {
                    public static object fixtureData = null;

                    public void SetFixture(object data)
                    {
                        if (fixtureData == null)
                            fixtureData = data;
                        else
                            Assert.Same(fixtureData, data);
                    }

                    [Fact]
                    public void Test1()
                    {
                    }

                    [Fact]
                    public void Test2()
                    {
                    }
                }";

        XmlNode assemblyNode = Execute(code);

        XmlNode result0 = ResultXmlUtility.GetResult(assemblyNode, 0);

        ResultXmlUtility.AssertAttribute(result0, "result", "Pass");
        XmlNode result1 = ResultXmlUtility.GetResult(assemblyNode, 1);

        ResultXmlUtility.AssertAttribute(result1, "result", "Pass");
    }
    public void TheoryWithDataAttributesWithNoData()
    {
        string code = @"
            using System;
            using System.Collections.Generic;
            using System.Reflection;
            using Xunit.Extensions;

            public class EmptyTheoryData : DataAttribute
            {
                public override IEnumerable<object[]> GetData(MethodInfo methodUnderTest, Type[] parameterTypes)
                {
                    return new object[0][];
                }
            }

            public class Stub
            {
                [Theory]
                [EmptyTheoryData]
                public void TheoryMethod(int x)
                {
                }
            }
        ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode, "result", "Fail");
        ResultXmlUtility.AssertAttribute(testNode, "name", "Stub.TheoryMethod");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(InvalidOperationException).FullName);
        XmlNode messageNode = failureNode.SelectSingleNode("message");

        Assert.Equal("System.InvalidOperationException : No data found for Stub.TheoryMethod", messageNode.InnerText);
    }
    public void TheoryViaXlsAcceptanceTest()
    {
        if (IntPtr.Size == 8)  // Test always fails in 64-bit; no JET engine
        {
            return;
        }

        string code = @"
                using System.Data;
                using Xunit.Extensions;

                public class Stub
                {
                    [Theory, ExcelData(@""DataTheories\AcceptanceTestData.xls"", ""select * from Data"")]
                    public void PassingTestData(int? foo, string bar, string baz)
                    {
                    }
                }
            ";


        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode1 = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode1, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode1, "name", "Stub." + @"PassingTestData(foo: 1, bar: ""Foo"", baz: ""Bar"")");

        XmlNode testNode2 = ResultXmlUtility.GetResult(assemblyNode, 0, 1);

        ResultXmlUtility.AssertAttribute(testNode2, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode2, "name", "Stub." + @"PassingTestData(foo: null, bar: null, baz: null)");

        XmlNode testNode3 = ResultXmlUtility.GetResult(assemblyNode, 0, 2);

        ResultXmlUtility.AssertAttribute(testNode3, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode3, "name", "Stub." + @"PassingTestData(foo: 14, bar: ""Biff"", baz: ""Baz"")");
    }
Esempio n. 14
0
        public void TestsFromAbstractBaseClassesShouldBeExecuted()
        {
            string code = @"
                using Xunit;

                public abstract class TestBase
                {
                    [Fact]
                    public void BaseTestMethod() {}
                }

                public class DerivedTestClass1 : TestBase
                {
                    [Fact]
                    public void TestMethod1() {}
                }

                public class DerivedTestClass2 : TestBase
                {
                    [Fact]
                    public void TestMethod2() {}
                }";

            XmlNode assemblyNode = Execute(code);

            XmlNode result00 = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

            ResultXmlUtility.AssertAttribute(result00, "result", "Pass");
            XmlNode result01 = ResultXmlUtility.GetResult(assemblyNode, 0, 1);

            ResultXmlUtility.AssertAttribute(result01, "result", "Pass");
            XmlNode result10 = ResultXmlUtility.GetResult(assemblyNode, 1, 0);

            ResultXmlUtility.AssertAttribute(result10, "result", "Pass");
            XmlNode result11 = ResultXmlUtility.GetResult(assemblyNode, 1, 1);

            ResultXmlUtility.AssertAttribute(result11, "result", "Pass");
        }
Esempio n. 15
0
    public void AssertAreEqualTwoNumbersNotEqualShouldThrowException()
    {
        string code = @"
            using System;
            using Xunit;

            public class MockTestClass
            {
                [Fact]
                public void TwoNumbersAreNotEqual()
                {
                    Assert.Equal(2, 3);
                }
            }
        ";

        XmlNode assemblyNode = Execute(code);

        XmlNode testNode    = ResultXmlUtility.AssertResult(assemblyNode, "Fail", "MockTestClass.TwoNumbersAreNotEqual");
        XmlNode failureNode = testNode.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(EqualException).FullName);
    }
    public void ClassWithFixtureAndSkippedFactDoesNotSetFixtureData()
    {
        string code = @"
                using Xunit;

                public class MyFacts : IUseFixture<object>
                {
                    public void SetFixture(object data)
                    {
                        Assert.True(false);
                    }

                    [Fact(Skip=""Skip Me!"")]
                    public void SkippedTest() {}
                }
            ";

        XmlNode assemblyNode = Execute(code);

        XmlNode result = ResultXmlUtility.GetResult(assemblyNode);

        ResultXmlUtility.AssertAttribute(result, "result", "Skip");
    }
    public void IncorrectParameterCountThrows()
    {
        string code = @"
                using Xunit.Extensions;

                public class Stub
                {
                    [Theory]
                    [InlineData(1)]
                    [InlineData(2, 3)]
                    [InlineData(4)]
                    public void PassingTestData(int x)
                    {
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode1 = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode1, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode1, "name", "Stub." + @"PassingTestData(x: 1)");

        XmlNode testNode2 = ResultXmlUtility.GetResult(assemblyNode, 0, 1);

        ResultXmlUtility.AssertAttribute(testNode2, "result", "Fail");
        ResultXmlUtility.AssertAttribute(testNode2, "name", "Stub." + @"PassingTestData(x: 2, ???: 3)");
        XmlNode failureNode = testNode2.SelectSingleNode("failure");

        ResultXmlUtility.AssertAttribute(failureNode, "exception-type", typeof(InvalidOperationException).FullName);

        XmlNode testNode3 = ResultXmlUtility.GetResult(assemblyNode, 0, 2);

        ResultXmlUtility.AssertAttribute(testNode3, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode3, "name", "Stub." + @"PassingTestData(x: 4)");
    }
    public void TheoryWithInlineDataOfSingleNullPassesNullToTestMethod()
    {
        string code = @"
                using Xunit;
                using Xunit.Extensions;

                public class Stub
                {
                    [Theory]
                    [InlineData(null)]
                    public void PassingTestData(string foo)
                    {
                        Assert.Null(foo);
                    }
                }
            ";

        XmlNode assemblyNode = Execute(code, null, "xunit.extensions.dll");

        XmlNode testNode = ResultXmlUtility.GetResult(assemblyNode, 0, 0);

        ResultXmlUtility.AssertAttribute(testNode, "result", "Pass");
        ResultXmlUtility.AssertAttribute(testNode, "name", "Stub.PassingTestData(foo: null)");
    }