我编写了一个类,它从控制台输入数据,并在main方法中输入参数。main方法针对不同的控制台输入调用不同的方法,并且针对不同的参数调用不同的函数。因此,我想通过模仿文件中的这些输入来使用Junit测试此主要方法。我该怎么做?junit中是否有特殊规定来测试该类的主要方法?
要提供来自文件的输入,请创建一个FileInputStream
并将其设置为System.in
流。您可能要在main方法完成后将原始文件放回原处,以确保以后使用它的所有内容仍然有效(其他测试,JUnit本身…)
这是一个例子:
@Test
public void testMain() throws IOException {
System.out.println("main");
String[] args = null;
final InputStream original = System.in;
final FileInputStream fips = new FileInputStream(new File("[path_to_file]"));
System.setIn(fips);
Main.main(args);
System.setIn(original);
}
在您的实际代码中,您将需要处理任何IOExceptions并使用比文件的完整路径更好的方法(通过类加载器获取),但这为您提供了总体思路。
问题内容: 我有一个充满void方法的Java类,我想进行一些单元测试以获得最大的代码覆盖率。 例如我有这种方法: 它的名字不好用是因为我翻译了代码以更好地理解。每种方法均会验证参数是否在某种程度上有效并且编写正确。 范例: 我的单元测试很好地涵盖了小的方法,因为我要求它们检查ErrorFile是否包含错误消息,但是我看不到如何测试方法checkIfValidElements,它什么也不返回或什么
问题内容: 我在下面的方法中编写测试用例时遇到问题: 这是我编写的测试用例,但我认为此测试用例中存在继承问题或逻辑问题。应该是一个非常简单的示例,但无法弄清楚。这是我写的代码: 问题答案: 两件事情 : 您正在静态调用非静态方法。该方法应声明为静态: public static boolean evenNum(double num){ } 您没有正确输入方法的名称。仔细看。还考虑将其重命名为更易读
我有一个名为dealDeck()的公共静态void方法,该方法从名为deck的ArrayList中获取对象,并根据它们在列表中的位置将它们分离并放置到4个不同的ArrayList中。是否有JUnit测试来检查方法是否按计划运行? 是否可以或应该测试此方法?
我有一个充满void方法的java类,我想做一些单元测试以获得最大的代码覆盖率。 例如,我有以下方法: 它的名字不好,原因是我翻译了代码以便更好地理解。每个方法都验证参数是否以某种方式有效,是否编写得很好。
我有这两种方法,在使用Mock实现测试时遇到了困难。我该如何参加考试? 我有麻烦得到Jboss目录而不必启动System.get属性(jboss.server.temp.dir);
问题内容: 也许我的问题是新手,但是我真的无法理解在什么情况下使用junit? 无论是编写简单的应用程序还是大型应用程序,我都使用语句对其进行测试,这对我来说很容易。 如果仍然需要调用相同的方法,检查它们返回的内容,然后又要为所有内容添加注释,那么为什么要使用JUnit创建测试类,在项目中创建不必要的文件夹呢? 为什么不编写一个类并立即对其进行测试而不创建Test-class? PS。我从未在刚刚