gpt4 book ai didi

java - 我应该对主要方法进行单元测试吗?

转载 作者:行者123 更新时间:2023-11-30 07:56:20 25 4
gpt4 key购买 nike

是否值得尝试对控制台应用程序的主要方法进行单元测试?

main 方法是目前唯一没有测试覆盖率的代码。

public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Pass the root directory and the directory to scan.");
System.exit(1);
}
Path root = Paths.get(args[0]);
Path scan = Paths.get(args[1]);
Demo demo = new Demo();
String output = demo.scan(root, scan);
System.out.println(output);
}

最佳答案

你到底在测试什么?这是您在决定测试某些代码片段时必须问自己的问题。

在理想情况下,拥有 100% 的代码和分支覆盖率是很好的,并且能够确保代码在重写时正常运行是一个巨大的好处。但是,永远不要将代码覆盖率单独用作测试覆盖率的合适“快乐”指标。

在这种情况下,您必须长时间认真地查看您真正想要检查的内容。考虑到你要更新很多东西,而且你必须模拟这里的几乎所有东西,你可以做的现实的事情是测试“这个对象是否使用这些参数调用这个方法?”的机械过程。坦率地说,这并不是一个好的测试。

我建议您专门测试Demo#scan,而不是整个main,因为:

  • scan 是一种需要Demo 新实例的方法,它不容易注入(inject)到main 中。是的,我知道您可以使用 PowerMockito 来完成此操作,但模拟新出现的内容对我来说是一种试探。
  • 如果满足以下任一条件,您的应用程序将无法运行:
    • args 没有收到正确数量的参数
    • 通过args传入的路径无效或格式错误
  • 如果您确实进行了测试,您会开始意识到您实际上是在测试大量库代码并确保库代码正常工作。这有一些优势,但在这种情况下,榨汁不值得。

关于java - 我应该对主要方法进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com