我们中的一些人仍然“生活”在尚未接受单元测试的编程环境中。首先,显而易见的第一步是尝试实现一个体面的单元测试框架,我猜 xUnit 是“标准”。
那么在新的编程语言中实现 xUnit 的良好起点是什么?
顺便说一句,因为人们在问:我的目标环境是 Visual Dataflex。
我们中的一些人仍然“生活”在尚未接受单元测试的编程环境中。首先,显而易见的第一步是尝试实现一个体面的单元测试框架,我猜 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 来感受这种风格的单元测试框架是如何工作的。然后,您需要深入研究行为并开始研究如何以适合您的新语言的方式重新创建该行为。
我在 VFP 中创建了一个体面的单元测试框架,它基于David Astels的Test Driven Development: A Practical Guide中的代码。通过阅读示例、理解技术并将 Java 代码翻译成您的语言,您将获得很长的路要走。
我发现在 C# 中使用 NUnit 进行实用单元测试非常有帮助!