You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 xUnit测试项目如何获取自身Assembly(程序集)?

如何获取.NET 8 xUnit测试项目的Assembly?

针对你的场景,推荐以下两种可靠的解决方案:

方案一:通过测试类类型获取

直接使用测试项目中任意一个测试类的Type来定位目标程序集,这是最直接且不易出错的方式:

// 将MyTestClass替换为你测试项目中实际存在的测试类
var testAssembly = typeof(MyTestClass).Assembly;

原理:测试类本身就属于目标测试项目程序集,通过类型的Assembly属性可以直接关联到该程序集。

方案二:通过程序集名称加载

如果不想依赖具体测试类,可以直接通过程序集名称加载:

// 使用程序集短名称加载
var testAssembly = Assembly.Load("MyCompany.MyProject.Test");

// 若需指定版本、公钥等信息,可使用AssemblyName对象
var assemblyName = new AssemblyName("MyCompany.MyProject.Test");
var testAssembly = Assembly.Load(assemblyName);

你之前方法失效的原因说明

  • Assembly.GetEntryAssembly():xUnit测试由testhost进程托管运行,该方法返回的是testhost的程序集,而非你的测试项目程序集,属于正常运行逻辑。
  • Assembly.GetExecutingAssembly():如果你的获取代码写在非测试项目的程序集(比如通用辅助类库)中,返回的就是代码所在类库的程序集,而非测试项目程序集。
  • 遍历引用程序集:xUnit测试项目的程序集可能未被提前加载,或是遍历逻辑未覆盖到目标程序集,因此无法获取到。

内容的提问来源于stack exchange,提问作者Simone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:58:17