单元测试-用一种新的编程语言实现xunit



我们中的一些人仍然"生活"在一个尚未接受单元测试的编程环境中。首先,显而易见的第一步是尝试实现一个不错的单元测试框架,我想xUnit是"标准"。

那么,用一种新的编程语言实现xUnit的一个好的起点是什么呢?

顺便说一句,因为人们都在问:我的目标环境是Visual Dataflex。

它适用于哪种语言-已经有很多了。

如果这让你无法开始编写单元测试,那么你可以在没有测试框架的情况下开始。

C风格语言示例:

void Main() 
{
  var algorithmToTest = MyUniversalQuestionSolver();
  var question = Answer to { Life, Universe && Everything };
  var actual = algorithmToTest(question);
  var expected = 42;
  if (actual != expected) Error();
  // ... add a bunch of tests
}

Cobol风格语言示例:

MAIN.
  COMPUTE EXPECTED_ANSWER = 42
  SOLVE ANSWER_TO_EVERYTHING GIVING ACTUAL_ANSWER
  SUBTRACT ACTUAL_ANSWER FROM EXPECTED_ANSWER GIVING DIFFERENCE
  IF DIFFERENCE NOT.EQ 0 THEN
    DISPLAY "ERROR!"
  END-IF
  * ... add a bunch of tests
  STOP RUN

在完成对代码的更改(可能还有编译)后运行Main。每当有人向您的存储库提交代码时,请在服务器上运行main。

当你迷上了,多找一个框架,或者看看你是否可以把Main中的一些部分考虑到你自己的框架中。

我建议一个好的起点是在其他几种语言上使用xunit,以了解这种风格的单元测试框架是如何工作的。然后,你需要深入研究这种行为,并开始研究如何以适合你新语言的方式重现这种行为。

我根据David Astels的《测试驱动开发:实用指南》中的代码,在VFP中创建了一个不错的单元测试框架。通过阅读示例、理解技术并将Java代码翻译成您的语言,您将有很长的路要走。

我发现使用NUnit在C#中进行实用单元测试非常有用!

最新更新