public MolsController(
     ILogger <MolsController> logger,
     SqlConnection dapper,
     InnerBus innerBus
     )
 {
     _logger       = logger;
     this.dapper   = dapper;
     this.innerBus = innerBus;
 }
Exemple #2
0
        public bool QueueMessage(IMessageSinkMessage message)
        {
            var testFailed = message as ITestFailed;

            if (testFailed != null)
            {
                var  exceptionType   = testFailed.ExceptionTypes.FirstOrDefault();
                bool shouldBeSkipped = exceptionType == typeof(SkipTestException).FullName;

                if (!shouldBeSkipped)
                {
                    try
                    {
                        IAttributeInfo[] skippableAttributes = testFailed.Test.TestCase.TestMethod.Method.GetCustomAttributes(typeof(SkippableFactAttribute)).ToArray();

                        if (skippableAttributes.Length > 0)
                        {
                            var    attr          = skippableAttributes[0];
                            string propertyName  = attr.GetNamedArgument <string>(nameof(SkippableFactAttribute.SkipOnFailurePropertyName));
                            Type   testClassType = testFailed.TestClass.Class.ToRuntimeType();
                            object classInstance = Activator.CreateInstance(testClassType, ConstructorArguments);

                            for (Type type = testClassType; type != null; type = type.BaseType)
                            {
                                var property = type.GetProperty(propertyName);

                                if (property != null)
                                {
                                    shouldBeSkipped = (bool)property.GetValue(classInstance);
                                    break;
                                }
                            }
                        }
                    }
                    catch
                    {
                    }
                }

                if (shouldBeSkipped)
                {
                    DynamicallySkippedTestCount++;
                    return(InnerBus.QueueMessage(new TestSkipped(testFailed.Test, testFailed.Messages.FirstOrDefault())));
                }
            }

            // Nothing we care about, send it on its way
            return(InnerBus.QueueMessage(message));
        }