多个夹具实例

问题描述 投票:0回答:1

我有一组单元测试,它使用fixture类来存储shared context

public class MSAccessFixture : IDisposable {
    // ...
}

public class MSAccess : IClassFixture<MSAccessFixture> {
    public MSAccess(MSAccessFixture fixture) {
        // ...
    }

夹具类的一个字段可以有两个不同的值。

如何针对灯具的任何一个实例在给定的测试类中运行相同的测试集?

c# xunit.net
1个回答
0
投票

AFAICT,此时无法控制给定夹具实例的值应该来自夹具类之外。因此,执行此操作的唯一方法是实现类型层次结构:

BaseFixture
    DerivedFixture1
    DerivedFixture2

其中每个派生的夹具具有不同的值。

(这也意味着测试类的类型层次结构,如here所述)。

so

public class MSAccessFixtureBase {
    public MSAccessFixtureBase(bool sharedConnection) {
        // ...
    }
}

public class MSAccessFixture : MSAccessFixtureBase {
    public MSAccessFixture() : base(false) { }
}
public class MSAccessFixture1Connection : MSAccessFixtureBase {
    public MSAccessFixture1Connection() : base(true) { }
}

public abstract class MSAccessBase {
    private MSAccessFixtureBase fixture;
    public MSAccessBase(MSAccessFixtureBase fixture) {
        this.fixture = fixture;
        // ...
    }
}

public class MSAccess : MSAccessBase, IClassFixture<MSAccessFixture> {
    public MSAccess(MSAccessFixture fixture) : base(fixture) { }
}
public class MSAccess1Connection : MSAccessBase, IClassFixture<MSAccessFixture1Connection> {
    public MSAccess1Connection(MSAccessFixture1Connection fixture) : base(fixture) { }
}
© www.soinside.com 2019 - 2024. All rights reserved.