- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Visual Studio 2012 测试框架(我想那是 MSTest)。我有一些代码需要在各种测试方法运行之前且仅运行一次。 ClassInitialize 看起来很完美,直到我了解到它必须是静态的。
首先,我有一个 ChromeDriver 的实例变量:
private ChromeDriver driver;
我想我需要这样的东西,但不是静态的:
[ClassInitialize]
public static void Initialize() {
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
options.AddArgument("start-maximized");
options.LeaveBrowserRunning = true;
driver = new ChromeDriver(@"C:\MyStuff", options);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(4));
}
上面的代码无法编译,因为类实例正在这个静态方法中被更新。但我不得不将其设为静态,否则运行时错误会导致“这必须是静态方法”和“错误的签名”等。
如果我在类构造函数或 TestInitialize 方法中启动我的 ChromeDriver(声明为类变量),一切正常,但为每个测试打开一个新的浏览器窗口。因此,当我有 50 个测试方法时,我将打开 50 个 Chrome 实例,这很糟糕。
我只想为每个测试重用我的 driver
实例,而不必每次都启动一个新的实例,这会打开一个新的浏览器。
如何做到这一点?
最佳答案
我不确定这是否真的是最佳方法,但您可以将其设为静态变量 - 毕竟从实例方法(您的测试)访问静态变量没问题。
请注意,如果您尝试并行运行测试,这可能会导致问题。可能值得研究什么是测试实例生命周期 - 您可以在其中使用一个实例进行多个测试,在这种情况下,在构造函数中初始化实例变量可能是另一种合理的方法。
(除非初始化驱动程序真的需要很长时间,否则我很想在每次测试的基础上创建它......)
关于c# - MSTest 中是否有非静态 ClassInitialize 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30084587/
我在单元测试的属性评估后执行单元测试的 classinitilalize 方法时遇到问题。这些测试使用 [classinitialize] 方法生成测试集,该测试集在 xml 文件中生成随机数据集。
我试图每次都使用不同的值运行一些测试。例如:我有 3 个方法:methodA、methodB 和 methodC。我想使用不同的索引位置对每个方法运行两次。我有 TestInitialize 和 Cl
我开始实习,我的工作包括为一些项目设置单元测试。 我已经实现了几十个测试,现在我想创建一种机制,在每次运行之后或之前恢复原始数据库。 我有必要的脚本来创建、填充和删除我的数据库,但我不想在每个测试类中
我在 VS2013 中实现了一个用于单元测试的测试类 在该类中,我定义了以下结构和列表: private struct TestCase { public string Stat
我正在为我的 C#.NET 应用程序的持久层编写一些单元测试。在测试类的测试执行之前和之后,我想做一些清理以清除可能插入的虚拟值,因此,这种清理发生在标有属性 [ClassInitialize( )]
我遇到了一个尴尬的情况——所有具有 [ClassInitialize] 方法的测试类都无法执行其中的所有测试方法。 例子: [TestClass] public class ChargeAccount
我在 TestBase 类中添加了这些方法: [ClassInitialize] public static void InitializBeforeAllTests() { } 但是当我在 Debu
我很好奇为什么夹具设置必须是静态的?对我来说,让每个夹具的实例变量共享夹具的生命周期似乎更直观。 是的,这些可以在构造函数中初始化,但是我认为它们超出了测试运行器的控制范围。 哪些设计要求或理念决定了
我正在使用 Visual Studio 2012 测试框架(我想那是 MSTest)。我有一些代码需要在各种测试方法运行之前且仅运行一次。 ClassInitialize 看起来很完美,直到我了解到它
首先,我是 SpecFlow 的新手。 我有一个功能文件,我有/想要使用 MSTest 自动运行它作为功能测试运行,涉及完全设置的服务器、数据访问......为此,我必须使用 SpecFlow 的“给
我正在使用 VS Unit 和 Moq 进行单元测试,但我无法找出放置模拟设置的正确位置。 目前我正在设置这样的模拟: [TestMethod] public void SomeTestMethod(
在编写我的第一个编码 ui 大型程序时,我发现我搞砸了在应用程序中移动的方式。这表明它使我的程序变得非常慢,我的意思是乌龟慢哈哈。在编写了大部分程序并对性能感到非常失望之后,我发现了这一点。 问题是我
在我的 Visual Studio 2012 解决方案中,我有一个用于单元测试 C++/CLI 代码的 C# 项目,例如 ... using System.IO; using Stuff; names
似乎每次测试都会调用 ClassInitialize。我想这是因为实际上为每个测试创建了一个新类。 为什么?所有其他框架都不会这样做! 无论如何......我需要在类上执行一种方法(非静态)。我还需要
有没有办法以编程方式找出在标记为 [AssemblyInitialize] 的方法中运行的 TestCategory? 我想做一些特定于某个测试类别的配置。 最佳答案 不,TestCategory 仅
使用 MStest - 我想找到排队等待运行的测试方法的总数。 我应该如何在 ClassInitialize() 或 AssemblyInitialize() 方法中捕获此值。 我唯一得到的是 Tes
我已从 Visual Studio 2010 升级到 Visual Studio 2012。 在我的单元测试项目中,我有一个 [ClassInitialize] 方法,它生成一个 CSV 文件,然后我
是否有与 MSTest 的 [ClassCleanup] 和 [ClassInitialize] 等效的非静态等效项? 我正在使用 MSTest 进行一些系统/集成级别的测试,我不想担心在测试中清理和
我已经将 NUnit 与 VS2008 一起使用,现在正在适应 VS2010 上的 MSTest。我曾经能够在 TestSetup() 中创建一个对象并在 TestCleanup() 中处理它,并且每
我是一名优秀的程序员,十分优秀!