我需要在访问TestMethod
之前访问TestContext.Properties
,以便测试可以接收正确的测试环境。
我的test.runsettings
的内容:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<TestRunParameters>
<Parameter name="colegio" value="7" />
</TestRunParameters>
如您所见,该文件只包含一个参数,称为colegio (school)
以下是TestBase.cs
的内容:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using InfraestructureSelenium.Helper;
using System.Collections.Generic;
using InfraestructureSelenium.Configuration.Enumerados;
namespace TestSelenium
{
[DeploymentItem("chromedriver.exe")]
[DeploymentItem("IEDriverServer.exe")]
[DeploymentItem("phantomjs.exe")]
[DeploymentItem("geckodriver.exe")]
[TestClass]
public class TestBase
{
protected TestBase()
{ }
public TestBase(int id = (int)ColegioEnum.ColegioDemoMovilidad2_Supervisor)
{
DiccionarioCompartido = new Dictionary<string, string>();
SeleniumHelper = new HelperSelenium(id, WebDriverSelector.ObtenerWebDriver());
}
public TestBase(HelperSelenium seleniumHelper, Dictionary<string, string> diccionarioCompartido = null)
{
SeleniumHelper = seleniumHelper;
}
public HelperSelenium SeleniumHelper { get; set; }
public static Dictionary<string, string> DiccionarioCompartido { get; set; }
public void CloseBrowser()
{
SeleniumHelper.Quit();
}
#region Configuración Test
[TestInitialize]
public void InitializeTest()
{
}
[TestCleanup]
public void TestCleanupTest()
{
SeleniumHelper.Quit();
}
#endregion
}
}
如您所见,public TestBase(int id = (int)ColegioEnum.ColegioDemoMovilidad2_Supervisor)
接收到一个参数,它对应于我想要测试的colegio
环境。
然而,当我尝试在TestClass
中示例化TestContext
时,如下所示:
[TestClass]
public class GenerarBoletinDeClase : TestBase
{
public TestContext TestContext { get; set; }
private static TestContext _testContext;
[TestInitialize]
public static void SetupTests(TestContext testContext)
{
_testContext = testContext;
}
public GenerarBoletinDeClase() : base((int)TestContext.Properties["colegio"]) { }
出现以下错误:x1米11米1x
任何帮助是感激的,因为我已经给了这个问题很多时间,我不能取得任何进展。
4条答案
按热度按时间blpfk2vs1#
您必须解决以下几个问题:
之后,你可以在任何单元测试中访问你想要的任何属性。
e4eetjau2#
首先,感谢@Peska在此答案https://stackoverflow.com/a/51367231/5364231中提供代码
最后,我把下面的代码添加到类
TestBase
中:装饰器
[AssemblyInitialize]
是必要的,[ClassInitialize]
和[TestInitialize]
将不起作用,我相信这是因为TestContext还没有被示例化。之后,请转到
Test > Test Settings > Select Test Settings File
以确保您已配置了Test Settings File
,该文件必须命名为*.runsettings
这样,就应该为
TestContext.Properties
设置好一切,以便从测试设置文件中读取数据hgncfbus3#
正如本Microsoft文档中所解释的,您不需要分配TestContext来填充它。它会在每次TestInitialize调用之前自动分配。从那里,您可以通过属性访问在 *.runsettings中定义的属性。
总之,只需添加一个名为TestContext的TestContext类型化属性,MS Test就会在运行时填充它。
z5btuh9x4#
要使用该文件:test.runsettings 1-必须手动选择运行stting文件在IDE中,选择测试〉配置运行设置〉选择解决方案范围的runsettings文件,然后选择.runsettings文件。
2-设置您已通过属性为项目指定运行设置文件的生成属性:运行设置文件路径
reference