gpt4 book ai didi

visual-studio-2010 - SpecFlow - 运行并行测试

转载 作者:行者123 更新时间:2023-12-04 08:15:27 24 4
gpt4 key购买 nike

我正在使用彼此无关的 SpecFlow 实现测试。 SpecFlow 是否有启用并行测试执行的配置选项?我正在使用 VS10 和 MSTest 运行器,它们支持运行“最多 5 个并行单元测试”,正如他们在文档中声称的那样。

谢谢,
最大yz

最佳答案

我从 MSTest 转移到 MbUnit 以实现这一目标。您可以使用 ParallelizableAttribute 使用 MbUnit 在测试装置级别实现并行性。然而,由于测试装置是从 .feature Gherkin 文件生成的,我必须获取 SpecFlow 源代码并修改 TechTalk.SpecFlow.Generator 项目中的 MbUnitTestGeneratorProvider 类以输出 ParallelizableAttribute。所以你最终会得到这样的结果:

public class MbUnitTestGeneratorProvider : IUnitTestGeneratorProvider
{
private const string TESTFIXTURE_ATTR = "MbUnit.Framework.TestFixtureAttribute";
private const string PARALLELIZABLE_ATTR = "MbUnit.Framework.ParallelizableAttribute";
private const string TEST_ATTR = "MbUnit.Framework.TestAttribute";
private const string ROWTEST_ATTR = "MbUnit.Framework.RowTestAttribute";
private const string ROW_ATTR = "MbUnit.Framework.RowAttribute";
private const string CATEGORY_ATTR = "MbUnit.Framework.CategoryAttribute";
private const string TESTSETUP_ATTR = "MbUnit.Framework.SetUpAttribute";
private const string TESTFIXTURESETUP_ATTR = "MbUnit.Framework.FixtureSetUpAttribute";
private const string TESTFIXTURETEARDOWN_ATTR = "MbUnit.Framework.FixtureTearDownAttribute";
private const string TESTTEARDOWN_ATTR = "MbUnit.Framework.TearDownAttribute";
private const string IGNORE_ATTR = "MbUnit.Framework.IgnoreAttribute";
private const string DESCRIPTION_ATTR = "MbUnit.Framework.DescriptionAttribute";

public bool SupportsRowTests { get { return true; } }

public void SetTestFixture(CodeTypeDeclaration typeDeclaration, string title, string description)
{
typeDeclaration.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTFIXTURE_ATTR)));

typeDeclaration.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(PARALLELIZABLE_ATTR)));

SetDescription(typeDeclaration.CustomAttributes, title);
}

如果你编译并使用它,你最终会得到可并行化的测试装置:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.6.1.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[MbUnit.Framework.TestFixtureAttribute()]
[MbUnit.Framework.ParallelizableAttribute()]
[MbUnit.Framework.DescriptionAttribute("Test")]
public partial class TestFeature
{

目前唯一的问题是您需要确保测试夹具不会相互冲突。也就是说,来自一个夹具的测试添加或修改了一个数据库行,该行破坏了与其同时运行的测试。有很多方法可以解决这个问题,但这可能超出了您原始问题的范围。

亚历克斯。

关于visual-studio-2010 - SpecFlow - 运行并行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com