【问题标题】:How can I make the "internal" classes and members of a .NET assembly visible to IronRuby code?如何使 IronRuby 代码可以看到 .NET 程序集的“内部”类和成员?
【发布时间】:2010-05-18 13:28:28
【问题描述】:

我的场景包括以下几点。

  • 我有一个使用 C# 开发的打包软件产品
  • 由于是打包产品,需要对程序集的公共接口进行严格控制...
    • 所有程序集都是强命名的
    • 任何不一定必须是“公共”的类都是“内部的”
  • 我想为那些“内部”类编写单元测试,因为它们是大部分代码

最后......我想尝试用 Ruby 编写单元测试。

由于单元测试将在包含被测代码的程序集外部,因此每个被测程序集都需要有一个“InternalsVisibleTo”属性来指定单元测试程序集的名称。这当然意味着 Ruby 单元测试必须编译为 .NET 程序集,以便它们可以通过这种方式获得访问权限。

这可以吗?如果是这样,怎么做?我在网上能找到的关于“编译 IronRuby”的所有内容都是关于从源代码构建实际的 IronRuby 运行时。

【问题讨论】:

    标签: .net unit-testing ironruby


    【解决方案1】:

    解决方案非常简单(您甚至不需要将 IronRuby 代码编译为程序集)。

    IronRuby 解释器 (ir.exe) 支持命令行开关 -X:PrivateBinding(这是区分大小写的,请注意)。当解释器在私有绑定模式下运行时,您可以调用.NET 类的内部甚至私有成员。

    因此,要测试您的 .NET 类内部成员,请按如下方式运行您的测试代码(假设测试代码位于名为“test_my_code.rb”的文件中):

    ir -X:PrivateBinding test_my_code.rb
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多