c# - xUnit 测试类内部

标签 c# xunit access-modifiers base-class

我需要 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/

相关文章:

.net - 使用xUnit.net AutoRollback和多线程

c# - 在 C# 中使用私有(private)属性有什么理由吗?

具有比其类更广泛访问级别的 Java 构造函数

c# - HttpContext.Current.Request.UrlReferrer 始终为 null ASP.NET MVC

C#/ODP.Net : MERGE INTO - How to get numer of affected Rows?

c# - 为什么调用 someMockInstance.Object 会调用构造函数?

.net - 在 F# 中,如何将集合传递给 xUnit 的 InlineData 属性

c++ - 为什么我可以通过指针访问私有(private)数据成员,我应该这样做吗?

c# - Java 和 C# 的并行开发

C# 进度条设计模式