如何使用MethodInterception Concept来调用方法,以及不使用"TestMethod" attribute

帕沙

知名会员
已加入
2020年4月29日
留言内容
64
编程经验
1-3
您好,

我想创建将用作的自定义属性"TestMethod"属性和类方法中,而不是编写{TestMethod]-我想使用自定义AOP属性,但是我无法做到这一点,有人可以帮忙吗?

Custom Attribute:
namespace Framework.Attributes
{
    /// <summary>
    /// This attribute will handle the exception
    /// </summary>
    [Serializable]
    public class HandleException : MethodInterceptionAspect
    {
        public string testName = string.Empty;
        public override void OnInvoke(MethodInterceptionArgs args)
        {
            args.Proceed();
            //if (args.Exception != null)
            //{
            //    testName = GetTestName(args);
            //    var logger = GetLogger();

            //    logger.Info($"Application has got exception in method-{args.Method.Name}");
            //    logger.Error($"Exception : {(!string.IsNullOrEmpty(args.Exception.Message) ? args.Exception.Message : "")}");
            //    logger.Error($"Inner Exception : {(!string.IsNullOrEmpty(args.Exception.InnerException.Message) ? args.Exception.InnerException.Message : "")}");
            //}
        }
        
        public ExtentTest GetLogger()
        {
            var report = ReportSingleton.GetInstance();
            var loggers = LoggersSingltons.GetInstance();
            var logger = loggers.Single(x => x.Model.Name == testName);
            return logger;
        }
    }
}

Main Class Code:
public class Scenario1_3DProduct_EndToEnd : ManualRegressionSuite.Model.Abstractions.Test.TestBaseMSTestV2.TestBase
    {
        public CommonMethods CommonMethods { get; set; }
        public string countryName = "Austria";

        [TestInitialize]
        public void BeforeTest()
        {
            BaseSetup();
            CommonMethods = new CommonMethods(shared_parameters, _logger);
        }

        [TestCleanup]
        public void AfterTest()
        {
            BaseCleanUp();
        }

        [TestCategory("BOL")]
        //[TestMethod]
        [HandleException]
        public void BOL_GB_3D_Product_EndToEnd_Scenario1()
        {
            LineSeparatorHelper lineSeparator = GetInstance<LineSeparatorHelper>();
            lineSeparator.LineFormatter("Executing 3D Product End to End Scenario for BOL");

          

            lineSeparator.LineFormatter("Execution for 3D Product End to End Scenario BOL is completed");
        }
    }

由于在MsTest V1中-我无法继承"TestMethod" due to it's sealed
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
使用Xunit而不是MSTest。我相信它的属性不是密封的。并且它们是密封的,它是开源的,因此您可以在可以打开密封的地方制作叉子。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
e57.jpg
You chose poorly.
 
最佳 底部