2016-08-05 65 views
0

我正在调试Tomcat Web应用程序,并且遇到了一个具有带有一些测试代码的主要方法的类。Java Web应用程序的主要方法的目的

有没有一种方法可以判断这是从Web应用程序调用的?或者,这仅仅是以前在IDE环境中开发人员测试的一种方式?

+6

它通常是编写测试的过时方法,使用诸如junit或testng之类的东西是更现代/传统的方法。据我所知,Tomcat有自己的主要方法来启动tomcat,并且不会调用任何其他主要方法(除非它直接从servlet或其他类中调用)。 – Taylor

+0

您的IDE应该能够向您显示给定方法的调用者,以便确保它未被使用。如果方法*正在使用,则在尝试构建时会出现错误。 – shmosel

回答

0

static void main()方法不应该从应用程序调用,但最好是要知道它是通过在应用程序的所有projets如果类名某处引用搜索(在类名文本搜索检查它更好,因为可以使用反射)。如果你没有找到任何参考,这是一个好兆头。如果你有参考,你应该明白为什么。接下来,你应该检查那个班级是否包含在我们的战争中。 它是在战争中,你应该通过将它移动到项目的测试文件夹(例如Maven/Gradle中的src/test/java)来排除它。

是一个设计不好的测试(没有单元测试)还是一个有用的测试代码? 这取决于。 有时候,你需要做一些测试而不进行单元测试,因为你没有掌握你试图测试的环境(远程web服务,因为外部等原因而无法掌握的数据),所以你不需要因为它会让你的应用程序的构建失败。一般来说,单元测试在构建中自动播放。 所以,你不应该使用单元测试来进行这种测试,而应该使用static void main()。通过这种方式,您可以在需要时进行手动测试,无论结果如何,您都无法构建失败。

如果您发现测试是为了这种需求而完成的,则应该添加一条关于它的Java注释。否则,如果测试是可复制的并且依赖于应用程序的内部服务,并且不依赖于更改数据库数据,则应添加一条FIXME注释以表明它应该转换为单元测试。