【问题标题】:What dynamic language can I use for .NET unit tests?.NET 单元测试可以使用什么动态语言?
【发布时间】:2009-05-04 11:58:42
【问题描述】:

我正在尝试为我的 C# 代码编写一些复杂的验收测试。我注意到,当我编写测试时,我做了很多显式转换以满足 C# 编译器的要求。我喜欢使用静态类型语言(如 C#)在生产代码中获得的类型安全性,但对于我的测试,我很乐意使用动态类型语言(例如 IronPython 或 IronRuby)来避免所有显式转换。如果我的测试调用了一个对象上不存在的方法,那么代码在运行时失败是可以的(这只是一个失败的测试)。我目前正在使用 MS Test 作为我的单元测试框架,如果我能继续使用它会很方便。我可以使用哪种动态(基于 DLR)语言来与 MS Test 集成?如果您认为这会有所帮助,请随意提出不同的测试框架。

【问题讨论】:

    标签: c# .net unit-testing mstest dynamic-language-runtime


    【解决方案1】:

    我推荐 IronPython——它的优点之一是优秀的书籍“IronPython in Action”,它将引导您了解每个重要方面,包括测试。

    【讨论】:

    • 经过进一步调查,我发现 DLR 中的 ScriptEngine 类可用于调用 IronRuby 或 IronPython 脚本,并将对象传递给它们。我认为短期内最好的方法是编写存根测试方法(用 [TestMethod] 属性装饰)并为每个方法调用不同的动态脚本。我从 IronPython 书中下载了示例代码,它展示了如何做到这一点。当 C# 4.0 出来时,我可以使用 'dynamic' 关键字,我根本不需要外部脚本。
    【解决方案2】:

    我更喜欢 C# 进行单元测试...如果您正在寻找动态语言,您可以尝试使用 iron-python...

    【讨论】:

      【解决方案3】:

      对于 IronRuby 和 Rspec,您可以查看这篇文章:

      http://msdn.microsoft.com/en-us/magazine/dd453038.aspx

      还有http://msdn.microsoft.com/sv-se/magazine/dd434651(en-us).aspx,感谢您开始使用 IronRuby .Net 互操作。

      那么总会有fitnesse:

      http://www.fitnesse.org/

      Fitnesse .net 1.1 和 2.0 二进制文件可在此处找到:http://fitnesse.org/FitNesse.DotNet

      【讨论】:

      • 感谢您的链接。我仍在寻找可以集成到 MS Test 中的动态语言(这意味着它必须支持类型和方法上的 .NET 属性),但如果我找不到任何可行的方法,我会考虑 RSpec。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多