Esempio n. 1
0
        /// <summary>
        /// 增加一次
        /// </summary>
        /// <param name="gcase"></param>
        /// <param name="addMethod"></param>
        /// <param name="result"></param>
        public void Add(string gcase, int addMethod, CaseResult result)
        {
            if (gcase.Length != 4)
            {
                throw new Exception("不合法的值");
            }
            if (addMethod < 0 || addMethod > 3)
            {
                throw new Exception("不合法的值");
            }
            bool isFound = false;

            foreach (var record in rs)
            {
                if (record.GCase == gcase)
                {
                    isFound = true;
                    int index = addMethod * 3 + (int)result;
                    record.Nums[index]++;
                    break;
                }
            }
            if (!isFound)
            {
                Record record = new Record()
                {
                    GCase = gcase
                };
                int index = addMethod * 3 + (int)result;
                record.Nums[index]++;
                rs.Add(record);
                Sort();
            }
        }
Esempio n. 2
0
        private static XElement Case(CaseResult caseResult)
        {
            var @case = new XElement("test",
                                     new XAttribute("name", caseResult.Name),
                                     new XAttribute("type", caseResult.MethodGroup.Class),
                                     new XAttribute("method", caseResult.MethodGroup.Method),
                                     new XAttribute("result",
                                                    caseResult.Status == CaseStatus.Failed
                        ? "Fail"
                        : caseResult.Status == CaseStatus.Passed
                            ? "Pass"
                            : "Skip"));

            if (caseResult.Status != CaseStatus.Skipped)
            {
                @case.Add(new XAttribute("time", Seconds(caseResult.Duration)));
            }

            if (caseResult.Status == CaseStatus.Skipped && caseResult.SkipReason != null)
            {
                @case.Add(new XElement("reason", new XElement("message", new XCData(caseResult.SkipReason))));
            }

            if (caseResult.Status == CaseStatus.Failed)
            {
                @case.Add(
                    new XElement("failure",
                                 new XAttribute("exception-type", caseResult.Exceptions.PrimaryException.Type),
                                 new XElement("message", new XCData(caseResult.Exceptions.PrimaryException.Message)),
                                 new XElement("stack-trace", new XCData(caseResult.Exceptions.CompoundStackTrace))));
            }

            return(@case);
        }
Esempio n. 3
0
        static XElement Case(CaseResult caseResult)
        {
            var @case = new XElement("test-case",
                                     new XAttribute("name", caseResult.Name),
                                     new XAttribute("executed", caseResult.Status != CaseStatus.Skipped),
                                     new XAttribute("success", caseResult.Status != CaseStatus.Failed),
                                     new XAttribute("result", Result(caseResult.Status)));

            if (caseResult.Status != CaseStatus.Skipped)
            {
                @case.Add(new XAttribute("time", Seconds(caseResult.Duration)));
            }

            if (caseResult.Status == CaseStatus.Skipped && caseResult.SkipReason != null)
            {
                @case.Add(new XElement("reason", new XElement("message", new XCData(caseResult.SkipReason))));
            }

            if (caseResult.Status == CaseStatus.Failed)
            {
                @case.Add(
                    new XElement("failure",
                                 new XElement("message", new XCData(caseResult.Exceptions.PrimaryException.Message)),
                                 new XElement("stack-trace", new XCData(caseResult.Exceptions.CompoundStackTrace))));
            }

            return(@case);
        }
Esempio n. 4
0
        public void ShouldReportPassFailSkipCounts()
        {
            using (var console = new RedirectedConsole())
            {
                var listener = new ConsoleListener();
                var assembly = typeof(ConsoleListener).Assembly;
                var version  = assembly.GetName().Version;

                var assemblyResult   = new AssemblyResult(assembly.Location);
                var conventionResult = new ConventionResult("Fake Convention");
                var classResult      = new ClassResult("Fake Class");
                assemblyResult.Add(conventionResult);
                conventionResult.Add(classResult);
                classResult.Add(CaseResult.Passed("A", TimeSpan.Zero));
                classResult.Add(CaseResult.Failed("B", TimeSpan.Zero, new ExceptionInfo(new Exception(), new AssertionLibraryFilter())));
                classResult.Add(CaseResult.Failed("C", TimeSpan.Zero, new ExceptionInfo(new Exception(), new AssertionLibraryFilter())));
                classResult.Add(CaseResult.Skipped("D", "Reason"));
                classResult.Add(CaseResult.Skipped("E", "Reason"));
                classResult.Add(CaseResult.Skipped("F", "Reason"));

                listener.AssemblyCompleted(assembly, assemblyResult);

                console.Lines().ShouldEqual("1 passed, 2 failed, 3 skipped, took 0.00 seconds (Fixie " + version + ").");
            }
        }
Esempio n. 5
0
        private static XElement Case(CaseResult caseResult)
        {
            var @case = new XElement("test",
                new XAttribute("name", caseResult.Name),
                new XAttribute("type", caseResult.MethodGroup.Class),
                new XAttribute("method", caseResult.MethodGroup.Method),
                new XAttribute("result",
                    caseResult.Status == CaseStatus.Failed
                        ? "Fail"
                        : caseResult.Status == CaseStatus.Passed
                            ? "Pass"
                            : "Skip"));

            if (caseResult.Status != CaseStatus.Skipped)
                @case.Add(new XAttribute("time", Seconds(caseResult.Duration)));

            if (caseResult.Status == CaseStatus.Skipped && caseResult.SkipReason != null)
                @case.Add(new XElement("reason", new XElement("message", new XCData(caseResult.SkipReason))));

            if (caseResult.Status == CaseStatus.Failed)
                @case.Add(
                    new XElement("failure",
                        new XAttribute("exception-type", caseResult.Exceptions.PrimaryException.Type),
                        new XElement("message", new XCData(caseResult.Exceptions.PrimaryException.Message)),
                        new XElement("stack-trace", new XCData(caseResult.Exceptions.CompoundStackTrace))));

            return @case;
        }
Esempio n. 6
0
 public void AddCaseAction(CaseResult yourCaseResult, CaseActionDescription yourDescription)
 {
     if (actions == null)
     {
         actions = new Dictionary <CaseResult, CaseActionDescription>();
     }
     actions.Add(yourCaseResult, yourDescription);
 }
Esempio n. 7
0
        public ConventionResult Execute(Listener listener, params Type[] candidateTypes)
        {
            var conventionResult = new ConventionResult(GetType().FullName);

            foreach (var testClass in Classes.Filter(candidateTypes))
            {
                var classResult = new ClassResult(testClass.FullName);

                var methods = Methods.Filter(testClass);

                var cases            = methods.SelectMany(method => CasesForMethod(testClass, method)).ToArray();
                var casesBySkipState = cases.ToLookup(CaseExecution.SkipPredicate);
                var casesToSkip      = casesBySkipState[true];
                var casesToExecute   = casesBySkipState[false];
                foreach (var @case in casesToSkip)
                {
                    var skipResult = new SkipResult(@case, CaseExecution.SkipReasonProvider(@case));
                    listener.CaseSkipped(skipResult);
                    classResult.Add(CaseResult.Skipped(skipResult.Case.Name, skipResult.Reason));
                }

                var caseExecutions = casesToExecute.Select(@case => new CaseExecution(@case)).ToArray();
                if (caseExecutions.Any())
                {
                    ClassExecution.Behavior.Execute(testClass, this, caseExecutions);

                    foreach (var caseExecution in caseExecutions)
                    {
                        if (caseExecution.Exceptions.Any())
                        {
                            var failResult = new FailResult(caseExecution, AssertionLibrary);
                            listener.CaseFailed(failResult);
                            classResult.Add(CaseResult.Failed(failResult.Case.Name, failResult.Duration, failResult.ExceptionSummary));
                        }
                        else
                        {
                            var passResult = new PassResult(caseExecution);
                            listener.CasePassed(passResult);
                            classResult.Add(CaseResult.Passed(passResult.Case.Name, passResult.Duration));
                        }
                    }
                }

                conventionResult.Add(classResult);
            }

            return(conventionResult);
        }
Esempio n. 8
0
        public string additionalError;                                  //case 错误的辅助备注 (主要是请求本身失败或错误)

        public MyExecutionDeviceResult()
        {
            caseId        = 0;
            caseProtocol  = CaseProtocol.unknownProtocol;
            requestTime   = null;
            spanTime      = null;
            startTime     = null;
            caseTarget    = null;
            backContent   = null;
            expectMethod  = CaseExpectType.judge_default;
            expectContent = null;
            result        = CaseResult.Unknow;
            staticDataResultCollection = null;
            additionalRemark           = null;
            additionalError            = null;
        }
Esempio n. 9
0
        private static XElement Case(CaseResult caseResult)
        {
            var nameWithoutParameters = caseResult.Name;
            var indexOfOpenParen      = nameWithoutParameters.IndexOf("(");

            if (indexOfOpenParen != -1)
            {
                nameWithoutParameters = nameWithoutParameters.Substring(0, indexOfOpenParen);
            }

            var indexOfLastDot = nameWithoutParameters.LastIndexOf(".");
            var type           = nameWithoutParameters.Substring(0, indexOfLastDot);
            var method         = nameWithoutParameters.Substring(indexOfLastDot + 1);

            var @case = new XElement("test",
                                     new XAttribute("name", caseResult.Name),
                                     new XAttribute("type", type),
                                     new XAttribute("method", method),
                                     new XAttribute("result",
                                                    caseResult.Status == CaseStatus.Failed
                        ? "Fail"
                        : caseResult.Status == CaseStatus.Passed
                            ? "Pass"
                            : "Skip"));

            if (caseResult.Status != CaseStatus.Skipped)
            {
                @case.Add(new XAttribute("time", Seconds(caseResult.Duration)));
            }

            if (caseResult.Status == CaseStatus.Skipped && caseResult.SkipReason != null)
            {
                @case.Add(new XElement("reason", new XElement("message", new XCData(caseResult.SkipReason))));
            }

            if (caseResult.Status == CaseStatus.Failed)
            {
                @case.Add(
                    new XElement("failure",
                                 new XAttribute("exception-type", caseResult.ExceptionSummary.Type),
                                 new XElement("message", new XCData(caseResult.ExceptionSummary.Message)),
                                 new XElement("stack-trace", new XCData(caseResult.ExceptionSummary.StackTrace))));
            }

            return(@case);
        }
Esempio n. 10
0
        static XElement Case(CaseResult caseResult)
        {
            var @case = new XElement("test-case",
                new XAttribute("name", caseResult.Name),
                new XAttribute("executed", caseResult.Status != CaseStatus.Skipped),
                new XAttribute("success", caseResult.Status != CaseStatus.Failed));

            if (caseResult.Status != CaseStatus.Skipped)
                @case.Add(new XAttribute("time", Seconds(caseResult.Duration)));

            if (caseResult.Status == CaseStatus.Skipped && caseResult.SkipReason != null)
                @case.Add(new XElement("reason", new XElement("message", new XCData(caseResult.SkipReason))));

            if (caseResult.Status == CaseStatus.Failed)
            {
                @case.Add(
                    new XElement("failure",
                        new XElement("message", new XCData(caseResult.Exceptions.PrimaryException.Message)),
                        new XElement("stack-trace", new XCData(caseResult.Exceptions.CompoundStackTrace))));
            }

            return @case;
        }
Esempio n. 11
0
		public Case()
		{
			Result = new CaseResult();
		}
Esempio n. 12
0
        /// <summary>
        /// i will get a myRunCaseData that will give caseActionActuator from XmlNode
        /// </summary>
        /// <param name="yourRunNode">your XmlNode</param>
        /// <returns>myRunCaseData you want</returns>
        public static MyRunCaseData <ICaseExecutionContent> GetCaseRunData(XmlNode sourceNode)
        {
            MyRunCaseData <ICaseExecutionContent> myCaseData = new MyRunCaseData <ICaseExecutionContent>();
            CaseProtocol contentProtocol = CaseProtocol.unknownProtocol;

            if (sourceNode == null)
            {
                myCaseData.AddErrorMessage("Error :source data is null");
            }
            else
            {
                if (sourceNode.Name == "Case")
                {
                    #region Basic information
                    if (sourceNode.Attributes["id"] == null)
                    {
                        myCaseData.AddErrorMessage("Error :not find the ID");
                    }
                    else
                    {
                        try
                        {
                            myCaseData.id = int.Parse(sourceNode.Attributes["id"].Value);
                        }
                        catch (Exception)
                        {
                            myCaseData.AddErrorMessage("Error :find the error ID");
                        }
                    }
                    myCaseData.name = CaseTool.GetXmlAttributeVauleEx(sourceNode, "remark", "NULL");
                    #endregion

                    #region Content
                    //XmlNode tempCaseContent = sourceNode.SelectSingleNode("Content"); //sourceNode["Content"] 具有同样的功能
                    XmlNode tempCaseContent = sourceNode["Content"];
                    if (tempCaseContent == null)
                    {
                        myCaseData.AddErrorMessage("Error :can not find Content");
                    }
                    else
                    {
                        if (tempCaseContent.Attributes["protocol"] != null && tempCaseContent.Attributes["actuator"] != null)
                        {
                            try
                            {
                                contentProtocol            = (CaseProtocol)Enum.Parse(typeof(CaseProtocol), tempCaseContent.Attributes["protocol"].Value);
                                myCaseData.contentProtocol = contentProtocol;
                            }
                            catch
                            {
                                myCaseData.AddErrorMessage("Error :error protocol in Content");
                            }
                            switch (contentProtocol)
                            {
                            case CaseProtocol.console:
                                myCaseData.testContent = CaseProtocolExecutionForConsole.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.activeMQ:
                                myCaseData.testContent = CaseProtocolExecutionForActiveMQ.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.mysql:
                                myCaseData.testContent = CaseProtocolExecutionForMysql.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.ssh:
                                myCaseData.testContent = CaseProtocolExecutionForSsh.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.vanelife_http:
                                myCaseData.testContent = CaseProtocolExecutionForVanelife_http.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.http:
                                myCaseData.testContent = CaseProtocolExecutionForHttp.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.tcp:
                                myCaseData.testContent = CaseProtocolExecutionForTcp.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.telnet:
                                myCaseData.testContent = CaseProtocolExecutionForTelnet.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.com:
                                myCaseData.testContent = CaseProtocolExecutionForCom.GetRunContent(tempCaseContent);
                                break;

                            case CaseProtocol.vanelife_comm:
                                myCaseData.AddErrorMessage("Error :this protocol not supported for now");
                                break;

                            case CaseProtocol.vanelife_tcp:
                                myCaseData.AddErrorMessage("Error :this protocol not supported for now");
                                break;

                            case CaseProtocol.vanelife_telnet:
                                myCaseData.AddErrorMessage("Error :this protocol not supported for now");
                                break;

                            case CaseProtocol.defaultProtocol:
                                myCaseData.AddErrorMessage("Error :this protocol not supported for now");
                                break;

                            default:
                                myCaseData.AddErrorMessage("Error :this protocol not supported for now");
                                break;
                            }
                            if (myCaseData.testContent != null)
                            {
                                if (myCaseData.testContent.MyErrorMessage != null)  //将testContent错误移入MyRunCaseData,执行case时会检查MyRunCaseData中的错误
                                {
                                    myCaseData.AddErrorMessage("Error :the Content not analyticaled Because:" + myCaseData.testContent.MyErrorMessage);
                                    //return myCaseData;
                                }
                            }
                        }
                        else
                        {
                            myCaseData.AddErrorMessage("Error :can not find protocol or actuator in Content");
                        }
                    }
                    #endregion

                    #region Expect
                    XmlNode tempCaseExpect = sourceNode["Expect"];
                    if (tempCaseExpect == null)
                    {
                        myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_default;
                    }
                    else
                    {
                        if (tempCaseExpect.Attributes["method"] != null)
                        {
                            try
                            {
                                myCaseData.caseExpectInfo.myExpectType = (CaseExpectType)Enum.Parse(typeof(CaseExpectType), "judge_" + tempCaseExpect.Attributes["method"].Value);
                            }
                            catch
                            {
                                myCaseData.AddErrorMessage("Error :find error CaseExpectType in Expect");
                                myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_default;
                            }
                        }
                        else
                        {
                            myCaseData.caseExpectInfo.myExpectType = CaseExpectType.judge_is;
                        }
                        myCaseData.caseExpectInfo.myExpectContent = CaseTool.GetXmlParametContent(tempCaseExpect);
                    }
                    #endregion

                    #region Action
                    XmlNode tempCaseAction = sourceNode["Action"];
                    if (tempCaseAction != null)
                    {
                        if (tempCaseAction.HasChildNodes)
                        {
                            foreach (XmlNode tempNode in tempCaseAction.ChildNodes)
                            {
                                CaseResult tempResult = CaseResult.Unknow;
                                CaseAction tempAction = CaseAction.action_unknow;
                                try
                                {
                                    tempResult = (CaseResult)Enum.Parse(typeof(CaseResult), tempNode.Name);
                                }
                                catch
                                {
                                    myCaseData.AddErrorMessage(string.Format("Error :find error CaseAction in Action with [{0}] in [{1}]", tempNode.InnerXml, tempNode.Name));
                                    continue;
                                }
                                try
                                {
                                    tempAction = (CaseAction)Enum.Parse(typeof(CaseAction), "action_" + CaseTool.GetXmlAttributeVauleWithEmpty(tempNode, "action"));
                                }
                                catch
                                {
                                    myCaseData.AddErrorMessage(string.Format("Error :find error CaseAction in Action with [{0}] in [{1}]", tempNode.InnerXml, CaseTool.GetXmlAttributeVauleWithEmpty(tempNode, "action")));
                                    continue;
                                }
                                if (tempNode.InnerText != "")
                                {
                                    myCaseData.AddCaseAction(tempResult, new CaseActionDescription(tempAction, tempNode.InnerText));
                                }
                                else
                                {
                                    myCaseData.AddCaseAction(tempResult, new CaseActionDescription(tempAction, null));
                                }
                            }
                        }
                    }
                    #endregion

                    #region Attribute
                    XmlNode tempCaseAttribute = sourceNode["Attribute"];
                    if (tempCaseAttribute != null)
                    {
                        if (tempCaseAttribute.HasChildNodes)
                        {
                            if (tempCaseAttribute["Delay"] != null)
                            {
                                try
                                {
                                    myCaseData.caseAttribute.attributeDelay = int.Parse(tempCaseAttribute["Delay"].InnerText);
                                }
                                catch
                                {
                                    myCaseData.AddErrorMessage("Error :find error Delay data in Attribute");
                                }
                            }
                            if (tempCaseAttribute["Level"] != null)
                            {
                                try
                                {
                                    myCaseData.caseAttribute.attributeLevel = int.Parse(tempCaseAttribute["Level"].InnerText);
                                }
                                catch
                                {
                                    myCaseData.AddErrorMessage("Error :find error Level data in Attribute");
                                }
                            }
                            if (tempCaseAttribute["ParameterSave"] != null)
                            {
                                if (tempCaseAttribute["ParameterSave"].HasChildNodes)
                                {
                                    foreach (XmlNode tempNode in tempCaseAttribute["ParameterSave"].ChildNodes)
                                    {
                                        if (tempNode.Name == "NewParameter")
                                        {
                                            string          tempParameterName       = CaseTool.GetXmlAttributeVaule(tempNode, "name");
                                            string          tempParameterMode       = CaseTool.GetXmlAttributeVaule(tempNode, "mode");
                                            string          tempParameterAdditional = CaseTool.GetXmlAttributeVaule(tempNode, "additional");
                                            string          tempFindVaule           = tempNode.InnerText;
                                            PickOutFunction tempPickOutFunction     = PickOutFunction.pick_str;
                                            if (tempParameterName == null)
                                            {
                                                myCaseData.AddErrorMessage("Error :can not find name data in NewParameter in Attribute");
                                                continue;
                                            }
                                            if (tempParameterName == "")
                                            {
                                                myCaseData.AddErrorMessage("Error :the name data in NewParameter is empty in Attribute");
                                                continue;
                                            }
                                            if (tempParameterMode == null)
                                            {
                                                myCaseData.AddErrorMessage("Error :can not find mode data in NewParameter in Attribute");
                                                continue;
                                            }
                                            if (tempFindVaule == "")
                                            {
                                                myCaseData.AddErrorMessage("Error :the NewParameter vaule is empty in Attribute");
                                                continue;
                                            }
                                            try
                                            {
                                                tempPickOutFunction = (PickOutFunction)Enum.Parse(typeof(PickOutFunction), "pick_" + tempParameterMode);
                                            }
                                            catch
                                            {
                                                myCaseData.AddErrorMessage("Error :find error ParameterSave mode in Attribute");
                                                continue;
                                            }
                                            myCaseData.caseAttribute.addParameterSave(tempParameterName, tempFindVaule, tempPickOutFunction, tempParameterAdditional);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                }
                else
                {
                    myCaseData.AddErrorMessage("Error :source data is error");
                }
            }
            return(myCaseData);
        }
Esempio n. 13
0
 private static void PrintCaseResultForArray(CaseResult result)
 {
     var resultOutput = "-";
     switch (result)
     {
         case CaseResult.Passed:
             Console.ForegroundColor = ConsoleColor.Green;
             resultOutput = ".";
             break;
         case CaseResult.Failed:
             Console.ForegroundColor = ConsoleColor.Red;
             resultOutput = "x";
             break;
         case CaseResult.Inconclusive:
             Console.ForegroundColor = ConsoleColor.Yellow;
             resultOutput = "-";
             break;
         default:
             break;
     }
     Console.Write(resultOutput);
     Console.ResetColor();
 }
Esempio n. 14
0
 public void Add(CaseResult caseResult)
 {
     caseResults.Add(caseResult);
 }
Esempio n. 15
0
 public void Add(CaseResult caseResult)
 {
     caseResults.Add(caseResult);
 }