我将Specflow与NUnit和Selenium结合使用,并希望在所有测试中共享驱动程序实例。我可以使用FeatureContext达到功能级别,但是看不到所有测试的任何内容。我知道这可能不是正确的方法,但我想知道是否有办法。
请帮助提供示例。
谢谢
有几种方法可以做到这一点。此页面涵盖了大多数
我个人可能要做的是定义一个SeleniumContext
类,并在所有Step类的构造函数中都需要该类,然后告诉SpecFlow的IOC在每种情况下都使用相同的实例:
首先创建用于保存硒驱动程序实例的类
public class SeleniumContext
{
public SeleniumContext()
{
//create the selenium context
WebDriver = new ...create the flavour of web driver you want
}
public IWebDriver WebDriver{get; private set;}
}
然后将IOC设置为每次返回相同的实例
[Binding]
public class BeforeAllTests
{
private readonly IObjectContainer objectContainer;
private static SeleniumContext seleniumContext ;
public BeforeAllTests(IObjectContainer container)
{
this.objectContainer = container;
}
[BeforeTestRun]
public static void RunBeforeAllTests()
{
seleniumContext = new SeleniumContext();
}
[BeforeScenario]
public void RunBeforeScenario()
{
objectContainer.RegisterInstanceAs<SeleniumContext>(seleniumContext );
}
}
然后确保您的步骤类始终在其构造函数中要求上下文(您需要在每个步骤类中都执行此操作)
[Bindings]
public class MySteps
{
private SeleniumContext seleniumContext;
public MyClass(SeleniumContext seleniumContext)
{
//save the context so you can use it in your tests
this.seleniumContext = seleniumContext;
}
//then just use the seleniumContext.WebDriver in your tests
}
或者,如果您已经将实例存储在功能上下文中,则可以使用BeforeFeature
挂钩保存相同的实例:
[Binding]
public class BeforeAllTests
{
private static WebDriver webDriver;
[BeforeTestRun]
public static void RunBeforeAllTests()
{
webDriver = new WebDriver();
}
[BeforeFeature]
public static void RunBeforeFeature()
{
FeatureContext["WebDriver"] = webDriver;
}
}
当单元测试共享首选项时,值是否为get refresh every test?
问题内容: 当前,我所有的JUnit测试都从一个通用的基类扩展而来,该基类提供了带有和标记的方法 -真正要做的就是设置一堆静态资源/服务以供测试使用。 由于某些原因,这对我来说似乎很尴尬: 根据我的理解,JUnit4的部分要点是我们不再需要这种经典的测试继承。 当我将这些测试作为套件的一部分而不是单独运行(我们经常这样做)时,多次调用和,从而减慢了测试的速度-我们实际上应该只调用一次 我想做的是以
我正在努力理解使用的好处。文档和其他帖子(Junit@Rule是如何工作的?)所有这些都暗指能够在类内的测试之间共享代码和/或在测试类之间共享代码。 在功能/集成测试中,我试图使用进行DB连接,但我不知道如何跨类共享该连接。事实上,在这种情况下,我并没有看到比有什么好处。我是不是用错了,还是我遗漏了什么?
问题内容: 我想有一个header.html,它定义我所有网页的标题如何。如何将此header.html插入顶部的其他网页? 可能会有更好的方法来实现要共享的公共标头。由于我仍然认为自己是html的新手(但不适合编程),因此我愿意接受更好的建议。 谢谢。 编辑:有用的答复提到了使用PHP。但是,我使用AngularJS作为前端,而我的PHP后端仅仅是一个纯REST服务器。我更喜欢用AngularJ
我想创建一个随机的int值,在多个类中使用。每次创建这些类的一组新实例时,我都希望对所有这些类使用一个新的随机int值。不过,随机值应该是相同的。 简而言之,我希望创建一个随机索引,并在多个共同生成数据的类中使用。 这个随机值是否应该在堆栈的顶部生成,并在一起工作的每个类中静态调用?
我有一个这样格式化的TestNG xml文件: 问题是:在test-output下名为junitreports的目录中,每个类都有一个junit报告,格式如下: 其中套件名与类名相同。我如何只获得一个带有一组TestNG测试结果的Junit报告文件?