如何将参数传递给接口 IClassFixture<TFixture>?
How can I pass a parameter to the interface IClassFixture<TFixture>?
我正在使用 xUnit 为 .Net 核心编写单元测试。
下面是测试库Class
public class TestBase : IDisposable
{
TestBase(string filename) {
...
stream = new MemoryStream(File.ReadAllBytes(Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, filename))));
}
public TestBase() : this("filename.csv") { }
public void Dispose() {
..
}
}
使用方法如下
public class FileProcessingServiceFacadeTest : IClassFixture<TestBase>
{
TestBase testBase { get; set; }
public FileProcessingServiceFacadeTest(TestBase testBase) {
this.testBase = testBase;
}
[Fact]
public void ProcessAsync() {
....
}
}
因为我不知道如何使用接口 IClassFixture 将参数传递给 TestBase class,所以我不得不创建一个构造函数内部调用参数构造函数。
我可以在没有额外构造函数的情况下将参数传递给 interface IClassFixture 吗?
Class(或 Collection Fixtures)仅支持默认构造函数。主要用例是 covered in the docs.
接口只是一个标记,测试运行器使用它来了解给定测试 create/dispose 需要什么 Class。如果 Test Class 上的构造函数请求实例,它会提供它们;如果不是,那也没关系(它们仍然会被创建和处理)
换句话说,你能做的最好的事情就是定义一个基础 class,然后有一个具体的派生 class 来传递文件名。
我正在使用 xUnit 为 .Net 核心编写单元测试。
下面是测试库Class
public class TestBase : IDisposable
{
TestBase(string filename) {
...
stream = new MemoryStream(File.ReadAllBytes(Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, filename))));
}
public TestBase() : this("filename.csv") { }
public void Dispose() {
..
}
}
使用方法如下
public class FileProcessingServiceFacadeTest : IClassFixture<TestBase>
{
TestBase testBase { get; set; }
public FileProcessingServiceFacadeTest(TestBase testBase) {
this.testBase = testBase;
}
[Fact]
public void ProcessAsync() {
....
}
}
因为我不知道如何使用接口 IClassFixture 将参数传递给 TestBase class,所以我不得不创建一个构造函数内部调用参数构造函数。
我可以在没有额外构造函数的情况下将参数传递给 interface IClassFixture 吗?
Class(或 Collection Fixtures)仅支持默认构造函数。主要用例是 covered in the docs.
接口只是一个标记,测试运行器使用它来了解给定测试 create/dispose 需要什么 Class。如果 Test Class 上的构造函数请求实例,它会提供它们;如果不是,那也没关系(它们仍然会被创建和处理)
换句话说,你能做的最好的事情就是定义一个基础 class,然后有一个具体的派生 class 来传递文件名。