如何使IronRuby代码可以看到“内部”类和.NET程序集的成员?

时间:2010-05-18 13:28:29

标签: .net unit-testing ironruby

我的方案包括以下几点。

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

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

由于单元测试将在包含待测代码的程序集的外部,因此被测试的程序集将需要具有指定单元测试程序集名称的“InternalsVisibleTo”属性。这当然意味着Ruby单元测试必须编译成.NET程序集,以便以这种方式为它们提供访问权。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

ir -X:PrivateBinding test_my_code.rb