按照程序概述here和here我能够设置一个TestRunParameter并在 Unit 测试中在运行时访问它。然后,我在编码的UI测试中重复了完全相同的过程,但无法访问属性。
我的.runsettings文件:
<RunSettings>
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
</RunSettings>
我的测试方法:
[TestMethod]
public void MyTest1()
{
// This throws an error because Properties["webAppUrl"] is null
string webAppUrl = TestContext.Properties["webAppUrl"].ToString();
// etc...
}
Coded UI测试是否需要其他配置才能访问这些运行时属性?
编辑:
我注意到在Unit测试的上下文中,TestContext是Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation
。在Coded UI测试中,TestContext为Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext
。
答案 0 :(得分:4)
在Coded UI测试中无法访问.runsettings TestRunParameter部分中定义的参数。调试Coded UI测试时,您会发现TextContext.Properties包含一些值,ResultsDirectory,AgentId等。
但是,找不到TestRunParameter部分中定义的参数。
您可以创建.cvs或.xml文件,并通过数据驱动访问数据,而不是在TestRunParameter部分中设置参数。请查看此文章了解详细信息:
答案 1 :(得分:0)
尝试在ClassInitialize中使用它取代测试方法,请参阅下面的代码
[ClassInitialize]
public static void TestClassinitialize(TestContext context)
{
var webAppUrl = context.Properties["webAppUrl"].ToString();
}