我的代码与其环境强烈交互。我是否应该费心进行单元测试?

时间:2008-12-05 00:42:03

标签: unit-testing

我正在编写的代码从操作系统收集性能数据(例如CPU使用率)。我想知道我是否应该费心去尝试对这段代码进行单元测试。似乎要对单元测试代码进行单元化,您需要设计被隔离到单元中的代码。我的代码与操作系统紧密相关,但如果我将与操作系统交互的代码隔离出来,我可以模拟出来的包装器,那么就没有多少东西需要测试。

所以,我认为单元测试在这里不起作用。我误解了如何使用单元测试吗?我阅读的博客中的每个人都说他们很好,但我不确定它们对所有应用领域都有用。

例如,如果我将此代码移动到不同版本的操作系统,我肯定会有很多错误,但我看不出单元测试如何帮助我找到它们。

您是否发现了同样的问题?我是否应该尝试为此编写单元测试?

4 个答案:

答案 0 :(得分:7)

你有任何商业逻辑吗?计算?或者你只是抓住并显示数据?

单元测试对测试单元很有用。换句话说,你的应用程序的任何部分可以孤立地工作吗?如果没有,那么单元测试并不是真的。

功能测试是另一个故事......

答案 1 :(得分:3)

我发现很难相信任何人都可以在不使用可以转换为程序或方法的程序或方法或代码块的情况下编写代码。如果您可以这样做,那么您可以为这些方法编写测试。编写这些测试的过程几乎会迫使您编写比其他方式更清晰,更分离的代码。如果您的方法与内核数据结构相关联,那么为您的方法编写测试将迫使您从逻辑的那些数据结构中抽象出来并围绕它们编写精简包装器。您可能无法完全测试代码的每一部分,但我认为您会发现 - 特别是如果您首先按@Wambie建议编写测试 - 您将能够测试比您更多的代码我认为可能,你的代码会更好。

答案 2 :(得分:2)

您的应用程序的结果是性能测量,但您确定正确测量性能指标吗?这是测试驱动开发的亮点。你被迫编写你知道的逻辑工作代码,那么当你运行应用程序时,如果以前所有的测试都已通过,你可以更加自信地测量你的测量结果。

测试驱动开发TDD正在快速增长,并且是XP(敏捷)的组件之一,似乎真的在增强动力。值得研究。

答案 3 :(得分:1)

听起来你可以从一些基本的测试中受益,例如:“当我将它移植到另一个操作系统时,整个模块是否会喷出任何数据?”,但除此之外,务实。

如果这样做实际上对您没有帮助,请不要这样做。为了测试而进行的测试是一种简单的方法,可以浪费时间,但收效甚微。