Пример #1
0
        public void CanCallContent(TestFrameworkTypes frameworkTypes)
        {
            var targetNamespace = "TestValue927446416";
            var result          = _testClass.Content(targetNamespace, frameworkTypes);

            Assert.That(result, Contains.Substring(targetNamespace));
        }
Пример #2
0
        public void CanCallGetUsings(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass = CreateFramework(frameworkTypes);
            var result    = testClass.GetUsings().ToList();

            Assert.That(result.Any(x => x.NormalizeWhitespace().ToFullString().Contains(expectedOutput)));
        }
Пример #3
0
        public void CanCallCreateSetupMethod(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass      = CreateFramework(frameworkTypes);
            var targetTypeName = "TestValue1801609112";
            var result         = testClass.CreateSetupMethod(targetTypeName);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #4
0
        public void CanCallAssertFail(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass = CreateFramework(frameworkTypes);
            var message   = "TestValue538721341";
            var result    = testClass.AssertFail(message);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #5
0
        public void CanCallAssertNotNull(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass = CreateFramework(frameworkTypes);
            var value     = Generate.Literal(1);
            var result    = testClass.AssertNotNull(value);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #6
0
        public void CanCallAssertIsInstanceOf(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass = CreateFramework(frameworkTypes);
            var value     = Generate.Literal(1);
            var type      = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword));
            var result    = testClass.AssertIsInstanceOf(value, type);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #7
0
        public void CanCallAssertThrows(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass     = CreateFramework(frameworkTypes);
            var exceptionType = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword));
            var methodCall    = Generate.Literal(1);
            var result        = testClass.AssertThrows(exceptionType, methodCall);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #8
0
        public void CanCallCreateTestMethod(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass = CreateFramework(frameworkTypes);
            var name      = "TestValue1606901338";
            var isAsync   = false;
            var isStatic  = true;
            var result    = testClass.CreateTestMethod(name, isAsync, isStatic);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
        public static void CanCallCreateForTestFramework(TestFrameworkTypes type, Type expectedType)
        {
            var options = Substitute.For <IUnitTestGeneratorOptions>();

            options.GenerationOptions.TestTypeNaming.Returns("{0}Tests");
            options.GenerationOptions.FrameworkType.Returns(type);
            options.GenerationOptions.MockingFrameworkType.Returns(MockingFrameworkType.Moq);
            var result = FrameworkSetFactory.Create(options);

            Assert.That(result.TestFramework, Is.InstanceOf(expectedType));
        }
Пример #10
0
        public void CanCallCreateTestCaseMethod(TestFrameworkTypes frameworkTypes, string expectedOutput)
        {
            var testClass  = CreateFramework(frameworkTypes);
            var name       = "TestValue947022583";
            var isAsync    = false;
            var isStatic   = false;
            var valueType  = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword));
            var testValues = new object[] { 1, 2 };
            var result     = testClass.CreateTestCaseMethod(name, isAsync, isStatic, valueType, testValues);

            Assert.That(result.NormalizeWhitespace().ToFullString(), Is.EqualTo(expectedOutput));
        }
Пример #11
0
        public static void CanCallGetReferencedAssemblies(TestFrameworkTypes testFramework, MockingFrameworkType mockingFramework, string expectedTestFramework, string expectedMockingFramework)
        {
            var options = Substitute.For <IUnitTestGeneratorOptions>();

            options.GenerationOptions.TestTypeNaming.Returns("{0}Tests");
            options.GenerationOptions.FrameworkType.Returns(testFramework);
            options.GenerationOptions.MockingFrameworkType.Returns(mockingFramework);
            var result = StandardReferenceHelper.GetReferencedNugetPackages(options);

            Assert.That(result.Any(x => string.Equals(x.Name, expectedTestFramework, StringComparison.OrdinalIgnoreCase)));
            Assert.That(result.Any(x => string.Equals(x.Name, expectedMockingFramework, StringComparison.OrdinalIgnoreCase)));
        }
        public string Content(string targetNamespace, TestFrameworkTypes testFrameworkTypes)
        {
            if (string.IsNullOrWhiteSpace(targetNamespace))
            {
                throw new ArgumentNullException(nameof(targetNamespace));
            }

            if ((testFrameworkTypes & TestFrameworkTypes.XUnit) > 0)
            {
                return(AssetResources.PropertyTesterXUnit.Replace("%targetNamespace%", targetNamespace));
            }

            if ((testFrameworkTypes & (TestFrameworkTypes.NUnit2 | TestFrameworkTypes.NUnit3)) > 0)
            {
                return(AssetResources.PropertyTesterNUnit.Replace("%targetNamespace%", targetNamespace));
            }

            return(AssetResources.PropertyTesterMSTest.Replace("%targetNamespace%", targetNamespace));
        }
        private static IEnumerable <PortableExecutableReference> GetReferences(TestFrameworkTypes testFrameworkTypes)
        {
            if ((testFrameworkTypes & TestFrameworkTypes.XUnit) > 0)
            {
                yield return(MetadataReference.CreateFromFile(typeof(FactAttribute).Assembly.Location));

                yield return(MetadataReference.CreateFromFile(typeof(Xunit.Assert).Assembly.Location));
            }

            if ((testFrameworkTypes & (TestFrameworkTypes.NUnit3 | TestFrameworkTypes.NUnit2)) > 0)
            {
                yield return(MetadataReference.CreateFromFile(typeof(TestFixtureAttribute).Assembly.Location));
            }

            if ((testFrameworkTypes & TestFrameworkTypes.MsTest) > 0)
            {
                yield return(MetadataReference.CreateFromFile(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute).Assembly.Location));
            }
        }
Пример #14
0
        private static ITestFramework CreateFramework(TestFrameworkTypes frameworkTypes)
        {
            switch (frameworkTypes)
            {
            case TestFrameworkTypes.MsTest:
                return(new MsTestTestFramework());

            case TestFrameworkTypes.NUnit2:
                return(new NUnit2TestFramework());

            case TestFrameworkTypes.NUnit3:
                return(new NUnit3TestFramework());

            case TestFrameworkTypes.XUnit:
                return(new XUnitTestFramework());

            default:
                throw new ArgumentOutOfRangeException(nameof(frameworkTypes));
            }
        }
        private static ITestFramework Create(TestFrameworkTypes testFrameworkTypes)
        {
            if ((testFrameworkTypes & TestFrameworkTypes.XUnit) > 0)
            {
                return(new XUnitTestFramework());
            }

            if ((testFrameworkTypes & TestFrameworkTypes.NUnit3) > 0)
            {
                return(new NUnit3TestFramework());
            }

            if ((testFrameworkTypes & TestFrameworkTypes.NUnit2) > 0)
            {
                return(new NUnit2TestFramework());
            }

            if ((testFrameworkTypes & TestFrameworkTypes.MsTest) > 0)
            {
                return(new MsTestTestFramework());
            }

            throw new NotSupportedException(Strings.FrameworkSetFactory_Create_Couldn_t_find_the_required_testing_framework);
        }
        public static async Task AssertTestGeneration(string resourceName, TestFrameworkTypes testFrameworkTypes, MockingFrameworkType mockingFrameworkType)
        {
            var classAsText = TestClasses.ResourceManager.GetString(resourceName, TestClasses.Culture);

            var tree = CSharpSyntaxTree.ParseText(classAsText, new CSharpParseOptions(LanguageVersion.Latest));

            var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location);
            var references   = new List <MetadataReference>
            {
                MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(INotifyPropertyChanged).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Expression).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Brush).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Stream).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Form).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(SqlConnection).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Window).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(UIElement).Assembly.Location),
                MetadataReference.CreateFromFile(typeof(DependencyObject).Assembly.Location),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Core.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Runtime.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Threading.Tasks.dll")),
            };

            references.AddRange(GetReferences(mockingFrameworkType));
            references.AddRange(GetReferences(testFrameworkTypes));

            var compilation = CSharpCompilation.Create(
                "MyTest",
                syntaxTrees: new[] { tree },
                references: references);

            var semanticModel = compilation.GetSemanticModel(tree);

            IUnitTestGeneratorOptions options = Substitute.For <IUnitTestGeneratorOptions>();

            options.GenerationOptions.FrameworkType.Returns(testFrameworkTypes);
            options.GenerationOptions.MockingFrameworkType.Returns(mockingFrameworkType);
            options.GenerationOptions.TestFileNaming.Returns("{0}Tests");
            options.GenerationOptions.TestTypeNaming.Returns("{0}Tests");
            options.GenerationOptions.TestProjectNaming.Returns("{0}.Tests");
            var core = await CoreGenerator.Generate(semanticModel, null, null, false, options, x => "Tests").ConfigureAwait(true);

            Assert.IsNotNull(core);
            Console.WriteLine(core.FileContent);
            Assert.IsNotNull(core.FileContent);

            var generatedTree = CSharpSyntaxTree.ParseText(core.FileContent, new CSharpParseOptions(LanguageVersion.Latest));

            var syntaxTrees = new List <SyntaxTree> {
                tree, generatedTree
            };

            if (core.RequiredAssets.Any(x => x == TargetAsset.PropertyTester))
            {
                var testerAsset    = AssetFactory.Create(TargetAsset.PropertyTester);
                var propertyTester = testerAsset.Content("Tests", testFrameworkTypes);
                syntaxTrees.Add(CSharpSyntaxTree.ParseText(propertyTester, new CSharpParseOptions(LanguageVersion.Latest)));
            }

            var validateCompilation = CSharpCompilation.Create(
                "MyTest",
                syntaxTrees: syntaxTrees,
                references: references,
                options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            var stream       = new MemoryStream();
            var result       = validateCompilation.Emit(stream);
            var streamLength = stream.Length;

            stream.Dispose();

            Assert.IsTrue(result.Success, string.Join(",", result.Diagnostics.Select(x => x.Location.GetLineSpan().StartLinePosition.Line + ": " + x.GetMessage())));
            Assert.That(streamLength, Is.GreaterThan(0));
        }
Пример #17
0
 public void GivenISetMyGenerationFrameworkTo(TestFrameworkTypes frameworkType)
 {
     _context.TargetFramework = frameworkType;
 }
 public GenerationOptions(TestFrameworkTypes testFramework, MockingFrameworkType mockFramework)
 {
     FrameworkType        = testFramework;
     MockingFrameworkType = mockFramework;
 }
Пример #19
0
        public void CanGetTestClassAttribute(TestFrameworkTypes frameworkTypes, string expected)
        {
            var testClass = CreateFramework(frameworkTypes);

            Assert.That(testClass.TestClassAttribute, Is.EqualTo(expected));
        }
Пример #20
0
        public void CanGetSingleThreadedApartmentAttribute(TestFrameworkTypes frameworkTypes, string expected)
        {
            var testClass = CreateFramework(frameworkTypes);

            Assert.That(testClass.SingleThreadedApartmentAttribute?.ToFullString(), Is.EqualTo(expected));
        }