Exemplo n.º 1
0
        public IUnitTestManager Run(string unitTestNamespace)
        {
            IUnitTestCaseManager         unitTestCaseManager       = DependencyManager.Instance.Resolver <IUnitTestCaseManager>();
            IUnitTestResultManager       unitTestResultManager     = DependencyManager.Instance.Resolver <IUnitTestResultManager>();
            List <UnitTestCaseContainer> unitTestCaseContainerList = unitTestCaseManager.GetUnitTestCaseByNamespace(unitTestNamespace);

            foreach (UnitTestCaseContainer unitTestCase in unitTestCaseContainerList)
            {
                object    unitTestInstance             = DependencyManager.Instance.Resolver(unitTestCase.UnitTestClassType);
                object    unitTestInstanceMethodReturn = null;
                Exception tmpException = null;
                UnitTestResultContainer unitTestResult = new UnitTestResultContainer
                {
                    ClassName         = unitTestCase.ClassName,
                    MethodName        = unitTestCase.MethodName,
                    UnitTestNamespace = unitTestCase.UnitTestNamespace,
                    MethodParas       = unitTestCase.MethodParas
                };
                try
                {
                    unitTestInstanceMethodReturn = unitTestInstance.GetType().GetMethod(unitTestCase.MethodName).Invoke(unitTestInstance, unitTestCase.MethodParas.ToArray());
                }
                catch (Exception ex)
                {
                    tmpException = ex;
                }

                switch (unitTestCase.CaseAssertType)
                {
                case UnitTestCaseAssertType.AssertEquals:
                    if (unitTestInstanceMethodReturn.Equals(unitTestCase.MethodReturn))
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertSame:
                    if (unitTestInstanceMethodReturn == unitTestCase.MethodReturn)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertFalse:
                    if (unitTestInstanceMethodReturn is bool && !(bool)unitTestInstanceMethodReturn)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertTrue:
                    if (unitTestInstanceMethodReturn is bool && (bool)unitTestInstanceMethodReturn)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertNull:
                    if (unitTestInstanceMethodReturn == null)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertNotNull:
                    if (unitTestInstanceMethodReturn != null)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;

                case UnitTestCaseAssertType.AssertNotSame:
                    if (unitTestInstanceMethodReturn != unitTestCase.MethodReturn)
                    {
                        unitTestResult.Result = true;
                    }
                    else
                    {
                        SetUnitTestResultFalse(unitTestResult, tmpException);
                    }
                    break;
                }
                unitTestResultManager.AddUnitTestResult(unitTestResult);
            }
            return(this);
        }