【发布时间】:2021-01-22 05:18:53
【问题描述】:
我知道这个问题与技术无关,是关于代码风格和标准的。
我刚学了一年编程,很多人告诉我“你应该测试你程序的任何一个部分,而不是全部代码然后测试”。但是他们忘了说我们是否应该在正式时删除测试语句发布了吗?
我听到几个不同的声音:
- 它会让你的代码看起来臃肿,所以删除它。
- 如果您以后想修改某些内容,则不应将其删除。
- 您可以删除它,但如果需要,您必须写一些评论。
一个简单的代码包含这样的测试:(真正的代码不会像它那么简单,示例可能有点糟糕)
void Function(){
printf("hello,world");
}
int main(){
// Function();
return 0;
}
所以我的问题是我们应该删除它吗?结果是这样的:
void Function(){
printf("hello,world");
}
int main(){
return 0;
}
【问题讨论】:
-
测试不应该这样工作。在构建过程中会调用测试并使用实际代码的各个单元(因此称为单元测试)。测试代码通常位于您的实际代码范围之外(例如 maven 项目中的
src/testvssrc/main)。您的任何测试代码都不应该驻留在实际代码中。如果你必须注释掉你的测试代码,那就有问题了。 -
请注意,您可以吃蛋糕也可以吃:Rust programming language 允许您将测试功能放在其实现旁边。编译器足够聪明,只在你运行
cargo test时编译测试代码 -
修改代码来测试它几乎违背了测试的目的。你怎么知道你的测试修改不是解决问题的方法?在现实生活中的编程中,测试是完全独立的实体(文件/文件组)。客户获取生产代码,开发人员使用生产代码+测试代码来验证正确性。
-
您在编程时会进行非正式测试,而这部分通常不值得保留。然后是作为单独代码编写的正式测试。后者如何使用主要取决于产品和组织的工作流程。在某些情况下,将测试与代码(“TDD”)放在一起是有意义的,在其他情况下,您不允许在生产代码中进行任何测试,在这种情况下,您可能希望将测试作为单独的分支处理版本控制。等等……我认为没有一种通用的方法适合所有产品。
-
恕我直言,您的示例不足以说明您的实际意思。
// Function();也没有测试任何东西(它是一个评论),也不是一个空的main你的最终代码(测试被删除,但其他所有内容也被删除)。无论如何,“测试”不仅仅是调用一个函数