public void ParseTestSuite()
        {
            TestSuite testSuite;

            using (Stream stream = File.OpenRead(@"..\..\..\Data\Samples\TestSuite.xml"))
            {
                using (XmlTestSuiteParser parser = new XmlTestSuiteParser(stream, businessActionsRepository))
                {
                    testSuite = parser.Parse();
                }
            }

            Assert.AreEqual("Banking", testSuite.TestSuiteName);
            Assert.AreEqual("OnlineBanking", testSuite.TestRunnerName);
            Assert.AreEqual("OnlineBankingNamespace", testSuite.Namespace);
            Assert.AreEqual(true, testSuite.IsParallelizable);
            Assert.AreEqual(20, testSuite.DegreeOfParallelism);

            Assert.AreEqual(1, testSuite.TestCasesCount);

            TestCase testCase = testSuite.GetTestCase("MoneyTransfer");

            Assert.IsNotNull(testCase);
            Assert.AreEqual("MoneyTransfer", testCase.TestCaseName);
            Assert.AreEqual(8, testCase.TestSteps.Count);

            TestCaseStep testCaseStep = testCase.GetTestAction("GoToPortal");

            Assert.IsNotNull(testCaseStep);
            Assert.AreEqual("GoToPortal", testCaseStep.ActionName);
            Assert.IsFalse(testCaseStep.HasParameters, "Action should NOT have parameters!");

            testCaseStep = testCase.GetTestAction("SignIn");
            Assert.IsNotNull(testCaseStep);
            Assert.AreEqual("SignIn", testCaseStep.ActionName);
            Assert.AreEqual(2, testCaseStep.Parameters.Count);
            Assert.IsTrue(testCaseStep.HasParameters, "Action should have 2 parameters!");
            Assert.IsNotNull(testCaseStep.GetParameterValue("username"));
            Assert.AreEqual("john", testCaseStep.GetParameterValue("username"));
            Assert.IsNotNull(testCaseStep.GetParameterValue("password"));
            Assert.AreEqual("doe", testCaseStep.GetParameterValue("password"));

            testCaseStep = testCase.GetTestAction("EnterDestinationAccountNumber");
            Assert.IsNotNull(testCaseStep);
            Assert.AreEqual("EnterDestinationAccountNumber", testCaseStep.ActionName);
            Assert.AreEqual(1, testCaseStep.Parameters.Count);
            Assert.IsNotNull(testCaseStep.GetParameterValue("destAccountId"));
            Assert.AreEqual(23677, testCaseStep.GetParameterValue("destAccountId"));

            testCaseStep = testCase.GetTestAction("EnterTransferAmount");
            Assert.IsNotNull(testCaseStep);
            Assert.AreEqual("EnterTransferAmount", testCaseStep.ActionName);
            Assert.AreEqual(1, testCaseStep.Parameters.Count);
            Assert.IsNotNull(testCaseStep.GetParameterValue("transferAmount"));
            Assert.AreEqual(644.33m, testCaseStep.GetParameterValue("transferAmount"));
        }
        public void InvalidSuiteElementTest()
        {
            const string Xml = "<suite><element /></suite>";

            byte[] bytes = Encoding.ASCII.GetBytes(Xml);
            using (MemoryStream stream = new MemoryStream(bytes))
            {
                using (XmlTestSuiteParser parser = new XmlTestSuiteParser(stream, businessActionsRepository))
                {
                    parser.Parse();
                }
            }
        }
        public void InvalidTestCaseElementTest()
        {
            const string Xml = "<suite><case id='SearchForProjects' category='Smoke'><element /></case></suite>";

            byte[] bytes = Encoding.ASCII.GetBytes(Xml);
            using (MemoryStream stream = new MemoryStream(bytes))
            {
                using (XmlTestSuiteParser parser = new XmlTestSuiteParser(stream, businessActionsRepository))
                {
                    parser.Parse();
                }
            }
        }
Esempio n. 4
0
        public int Execute(IEnumerable <string> args)
        {
            List <string> unhandledArguments = options.Parse(args);

            if (unhandledArguments.Count > 0)
            {
                throw new ArgumentException("There are some unsupported options.");
            }

            if (String.IsNullOrEmpty(businessActionsXmlFileName))
            {
                throw new ArgumentException("Missing business actions XML file name.");
            }

            if (String.IsNullOrEmpty(testSuiteXsdFileName))
            {
                throw new ArgumentException("Missing test suites XSD file name.");
            }

            if (String.IsNullOrEmpty(templateFileName))
            {
                throw new ArgumentException("Missing template file name.");
            }

            if (String.IsNullOrEmpty(templateFileExtension))
            {
                throw new ArgumentException("Missing template file extension.");
            }

            // parse business actions
            using (Stream xmlStream = File.OpenRead(businessActionsXmlFileName))
            {
                IBusinessActionXmlParser businessActionXmlParser = new BusinessActionsXmlParser(xmlStream);
                businessActionsRepository = businessActionXmlParser.Parse();
            }

            XmlValidationHelper xmlValidationHelper = new XmlValidationHelper();

            foreach (string testSuiteFileName in testSuitesFileNames)
            {
                // validate xml with xsd schema
                xmlValidationHelper.ValidateXmlDocument(testSuiteFileName, testSuiteXsdFileName);

                using (XmlTestSuiteParser testSuiteParser = new XmlTestSuiteParser(testSuiteFileName, businessActionsRepository))
                {
                    TestSuite parsedTestSuite = testSuiteParser.Parse();
                    parsedTestSuite.BusinessActionsRepository = businessActionsRepository;

                    // generate c# code
                    string codeFileName = Path.Combine(
                        outputDir,
                        Path.GetFileName(Path.ChangeExtension(testSuiteFileName, templateFileExtension)));
                    System.Console.WriteLine("Creating '{0}'", codeFileName);

                    ITestCodeGenerator codeGenerator = new TemplatedTestCodeGenerator(templateFileName, codeFileName);
                    codeGenerator.Generate(parsedTestSuite);
                }
            }

            return(0);
        }