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

如何让Rhino.Mocks在.NET 6测试项目中正常运行?

是否能让rhino.mocks在基于.NET 6平台的测试项目中正常工作?

在.NET 6项目中调用以下代码时,总是遇到异常。

异常信息

Method not found: 'System.Reflection.Emit.AssemblyBuilder System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)'.

代码示例

public interface IFoo
{
    void Go();
    int Run();
}

[TestFixture]
public class UnixTest
{
    private MockRepository _repo;

    [SetUp]
    public void Setup()
    {
        _repo = new MockRepository();
    }


    [Test]
    public void Test()
    {
        var stub = _repo.StrictMock<IFoo>();
        Assert.NotNull(stub);
    }
}

更新

由于大量测试都在使用Rhino.Mocks,必须找到解决办法。该异常是由.NET 6运行时中的Castle.DynamicProxy逻辑抛出的,以下是可行解决方案:

  • 下载rhino-mocks的源码
  • 使用dotnet-migrate-2019.exe工具转换项目文件
  • 将所有项目迁移至.NET Framework v4.6.2平台(Castle.Core要求的最低版本)
  • 更新rhino-mocks项目的所有外部引用(如xunit、Castle.Core 5等)
  • 修改源码确保解决方案可以编译,此过程会失去委托存根和远程存根(跨应用程序域存根)功能,若测试中未使用这两个功能则无影响。最终可创建net6.0或net6.0-windows平台的测试项目,添加编译后的rhino库显式引用,即可在Windows系统下正常运行。

附言:如果公司允许,稍后会将修改后的解决方案上传至GitHub。

再附言:Rhino测试已通过,但测试运行之间存在依赖关系。批量运行所有测试时,部分测试可能随机失败,但单独运行失败的测试时问题会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:38:23