有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用JUnit在与main相同的类中使用java测试方法

好的,在我们开始之前,让我声明一下,我已经在谷歌上搜索我的问题的答案好长一段时间了,但还没有找到合适的答案(关键词很棘手,因为我一直在得到不相关的帖子和网站作为结果)

现在,我有一个Java类,它包含一个my main方法和许多其他函数。我想使用JUnit测试这些函数,但是我不能实例化一个包含main的类,如果我只是尝试调用该函数,我会得到一个错误,说该函数在名称空间之外,即使两个文件都在同一个包中,并且我在尝试导入该文件时会出错

是否仍然可以使用JUnit测试这些函数

是的,我知道你可以把它们放在一个新类中,但是我不认为仅仅为了测试而创建一个新类或者放进两个用于解析用户输入的函数是过分的,而且仍然存在测试主函数本身的问题(编写一个只用于测试的主方法并不少见)


事情就是这样。因为我不经常使用java,所以我最终在类中创建了私有数据成员,但是把它们当作C++中的全局成员对待。结果,我在main中初始化了它们,没有考虑创建构造函数,因此也没有考虑实例化类的问题。当那不起作用时,我试了一下。但是由于这些方法引用了私有数据成员,所以在没有实例化类的情况下,我会得到一个错误。多亏了那些注意到构造器的家伙


共 (3) 个答案

  1. # 1 楼答案

    你绝对可以创建一个包含main方法的类的实例,当然,只要它有一个可访问的构造函数

    同样地,您完全可以使用MyClassName.myMethodName直接调用静态方法

    在类中使用main方法在Java语言本身方面对它绝对没有影响,因此您可以像测试任何其他类一样测试它

  2. # 2 楼答案

    很奇怪。我刚刚写了SomeClass,里面有main,它完全可以通过SomeClassTest类进行测试

  3. # 3 楼答案

    只是想一想,您是否在使用main方法的类中将构造函数声明为private?如果您能发布一些代码片段和收到的确切错误消息,这将非常有帮助