gpt4 book ai didi

xunit - 什么是 xUnit 运行设置等价物?

转载 作者:行者123 更新时间:2023-12-04 11:12:13 28 4
gpt4 key购买 nike

当我们使用 MSTest 时,我们有几个环境有自己的运行设置。由于 Microsoft 正在放弃 MSTest,我们将转向 xUnit。无论是通过运行设置还是命令行属性,我都需要一种在 xUnit 测试中指定 TestRunParameters 的方法。 xUnit 是否有像 MSTest 这样的本地方式来做到这一点,还是我需要提出自己的解决方案?

最佳答案

虽然在使用 xUnit 时您仍然可以使用 RunSettings 来控制 vstest.console 的某些方面,但当前版本没有本地方式来传递参数。我相信 v3 会有某种参数传递。
现在您可以使用环境变量,但如果您在同一系统上并行运行多个测试集,则会发生冲突。
我使用一个基类,它读入带有该测试集设置的 TestSettings.json 文件。使用以下代码,我可以传入新类型并让基类 json 读取器读取它们。

    /// <inheritdoc />
/// <summary>
/// Common TestBase which uses CommonSettingsModel. Use TestBase&lt;T&gt; to override with custom settings Type.
/// </summary>
public abstract class TestBase : TestBase<CommonSettingsModel>
{

}
/// <inheritdoc />
/// <summary>
/// Common TestBase for loading settings.
/// </summary>
/// <typeparam name="T">Type to read TestSettings.json file</typeparam>
public abstract class TestBase<T> where T : ICommonSettings, new()
{
/// <inheritdoc />
/// <summary>
/// Constructor loads Settings T
/// </summary>
protected TestBase()
{
Settings = SettingsUtil.GetSettings<T>();
}

/// <summary>
/// Settings T loaded from TestSettings.json
/// </summary>
protected T Settings { get; }
}
您也可以使用 Class 或 AssemblyFixture 进行相同类型的测试。
public class DatabaseFixture : IDisposable
{
public DatabaseFixture()
{
Db = new SqlConnection("MyConnectionString");

// ... initialize data in the test database ...
}

public void Dispose()
{
// ... clean up test data from the database ...
}

public SqlConnection Db { get; private set; }
}

public class MyDatabaseTests : IClassFixture<DatabaseFixture>
{
DatabaseFixture fixture;

public MyDatabaseTests(DatabaseFixture fixture)
{
this.fixture = fixture;
}

// ... write tests, using fixture.Db to get access to the SQL Server ...
}
  • https://xunit.net/docs/shared-context
  • 关于xunit - 什么是 xUnit 运行设置等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458979/

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