如何在codedUI的任何项目类中获取当前的测试方法名称?

时间:2019-04-18 13:25:35

标签: c# unit-testing coded-ui-tests testcontext

我想比较当前的测试方法名称,但是得到一个异常 TestContext返回null。

public TestContext TestContext { get; set; }

private void SetTaxCode(Bene beneDetails)
{if (TestContext.TestName.Contains("NegativeTest"))
{SetBenecode(TestDataProvider.TestDataProvider.InValidBeneficiaryTaxCode);
}
else
SetBenecode(beneDetails.BeneficiaryTaxCode);
}

TestContext.TestName在basic.cs中返回正确的测试名称,但是我不能将basic.cs继承到新类中,那么如何在不同的类中使用TestContext?

2 个答案:

答案 0 :(得分:0)

您可以将TestContext属性设置为static。这样,即使不实例化basic.cs类,您也可以调用它。

如果其他类无法访问basic.cs,则可以创建一个静态类,并将TestContext属性放在此处。

答案 1 :(得分:0)

据我从CodedUI的经验得知,TestContext不能设为静态。根据定义,它必须是非静态的。 如果要在不同的类中使用TestContext,可以将其作为类似于以下内容的参数传递:

[CodedUITest]
    public class SomeCodedUITest1
    {    
            public TestContext TestContext
            {
                get
                {
                    return testContextInstance;
                }
                set
                {
                    testContextInstance = value;
                }
            }
            private TestContext testContextInstance;

        [TestCategory("DataFiles"),
                 DataSource ( .... )]
          public void SampleMethod()
            {
                MyClass = new MyClass(TestContext);
            }
    }

然后在MyClass类中使用构造函数

public MyClass (TestContext testContext)
  {
  }

然后可以在TestContext内使用MyClass数据。例如,testContext.DataConnection.Database