我需要 xUnit 来处理内部测试类。 问题是我使用了通用基础测试夹具 UnitTestBase。 所以我将我的装置创建为
class MyFixture: UnitTestBase<SomeSystemUnderTheTest>
{
...
}
在某些情况下SomeSystemUnderTheTest
似乎是内部类。我们称之为SomeSystemUnderTheTestInternal
。结果UnitTestBase<SomeSystemUnderTheTestInternal>
即使 UnitTestBase
也似乎是内部的民众。因此我无法指定 MyFixture
公开,因为编译器表示您的基类的可访问性较低。因此,在我的例子中,MyFixture 只能是内部的,但 xUnit 要求它是公共(public)的。有没有办法让 xUnit 与内部装置一起工作?
SomeSystemUnderTheTest 是一个实现某些接口(interface)的类。它不会在任何地方直接使用,只是由 DI 容器注入(inject)。它被标记为内部。我稍微简化了上面的情况,SomeSystemUnderTheTest 实际上是从通用类 SomeSystemUnderTheTestBase 派生的,其中 SomeInternalClass 是一个内部类,因此整个树都是内部的。我无法更改它,因为这不是我们想做的事情。
最佳答案
将其添加到 SomeSystemUnderTestInternal
文件中的命名空间声明上方:
[assembly: InternalsVisibleToAttribute("TestProject")]
其中 TestProject
是包含测试类的项目的程序集名称。
关于c# - xUnit 测试类内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65730642/