使用不同语言编写单元测试代码的(dis)优势是什么?

ctf*_*ord 10 .net c# ironpython unit-testing

单元测试与生产代码有不同的要求.例如,单元测试可能不必像生产代码那样高效.

也许有时用一种更适合编写单元测试的语言编写单元测试是有意义的吗?我想到的具体示例是在C#中编写应用程序,但使用IronRuby或IronPython编写测试.

在我看来,使用IronPython和IronRuby比C#代码作为测试语言有几个优点:

  • 在动态类型语言中,模拟可以更简单
  • IronPython具有较少的冗长类型注释,在单元测试中不需要
  • 通过在解释器中键入命令,无需重新编译即可实验性地调用测试

使用两种不同语言进行测试和生产代码的权衡是什么?

Ste*_*ger 11

我想到的缺点:

  • 根据语言的不同,您需要另一个开发环境(项目的额外依赖性,设置开发机器的额外工作量,额外的许可证,额外的培训......)
  • IDE有时支持重构 - 但很可能不支持其他语言.所以你必须手动重构它们.
  • 单元测试也可以用作编程示例.测试显示了如何使用测试类.如果测试是用不同的语言编写的,那么这种方法效果不佳.

  • 作为编程示例的测试+1; 它也是了解代码可用性的好方法.另一方面,您可以争辩说,在VB.Net中针对C#API编写测试套件可以测试该API对于其他语言的可用性. (2认同)

Jon*_*eet 7

一个明显的潜在问题是令人困惑的调试体验.我没有亲自尝试在.NET中跨语言进行调试 - 如果你从IronPython中插入C#代码会发生什么?

另一个问题是,任何想要在代码库上开发的人都必须知道这两种语言.

  • 我维护了一个VB.net/C#混合解决方案 - 调试器工作正常,但你的头脑并不总是那么灵活. (3认同)
  • 这在VS2010中与C#和F#非常透明地工作; 调试器就像你期望的那样在源代码之间移动.我不能说其他语言. (2认同)