【问题标题】:Is there a cross-language TDD solution?有跨语言的 TDD 解决方案吗?
【发布时间】:2008-09-16 07:24:25
【问题描述】:

我想用 C#、Java 和 AS3 编写一个简单的颜色管理框架。我只想编写一次单元测试,而不是在 JUnit、FlexUnit 和 NUnit 中重新创建单元测试。

我想到了一个 xml 文件的想法,该文件通过设置、拆卸和一组测试来定义“实例”的操作和基于“实例”状态的断言。然后有一个实用程序可以将该 XML 转换为 xUnit 代码,用于任意数量的 xUnit。不过,在我开始浪费时间开发这样的解决方案之前,我想确保不存在类似的解决方案。

【问题讨论】:

  • 无论你做什么......请不要编写另一种基于 XML 的“语言”;-) 世界可以少用 1 个......

标签: unit-testing tdd cross-language


【解决方案1】:

FIT/Fitnesse适合你想要的吗?

FIT 是一个验收测试框架而不是单元测试框架,但根据您的描述,您希望确保这三个实现具有相同的行为而不是相同的设计。

FIT 有指向several languages的链接

【讨论】:

  • 很可能。它的规模比我想象的要大,但我会试试看。
【解决方案2】:

我认为您过于复杂了...您可能会考虑使用一种脚本语言,可以对所有 3 种语言都使用它。我知道 Ruby 可用于通过 JRuby 测试 Java,通过 IronRuby 测试 C#,但我不知道AS3.

我从来不需要自己做这件事,但我想像 Ruby 这样的动态语言真的可以让你在没有很多额外工作的情况下做到这一点。

【讨论】:

  • JRuby/ IronRuby 是一个很好的解决方案,可以创建一组可以编译为 JVM 和 .NET 解决方案的源代码,值得我考虑。但是它并不能解决 AS3 问题。
【解决方案3】:

作为旁注,您还可以尝试编写某种编译器,就像 FogCreek 的(不)著名的 Wasabi 语言,然后您可以用该语言编写代码和测试,并让编译器完成您的工作。 .. 这当然可能过于复杂,但我认为这比尝试定义 XML 测试语言要好得多...并且可能更具可读性。

【讨论】:

    【解决方案4】:

    您也可以使用 Slim 查看 Fitnesse,因为 Slim 对于新语言 (AS3) 的实现应该更加轻量级。我想这更多的是关于验收/集成测试而不是单元测试,但它可能值得研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多