如何将命令行参数传递给 Junit Test

Ami*_*mit 1 java junit command-line-arguments

我有一个接受命令行参数的主类,并且我将此参数传递给另一个类。现在我必须使用参数测试 myClass。我有 JUnit 来测试它,但我想知道如何在测试中通过它

public class JsonFileTest {
    public static void main(String[] fileNames) {
        myClass class = new myClass(fileNames);
    }
}
Run Code Online (Sandbox Code Playgroud)

我是 JUnit 的初学者,正在学习它,因此如果有任何指导,我将不胜感激。我需要将文件名传递给类方法。

Edu*_*yer 5

对于初学者来说几个有用的要点:

  1. 在 Java 中你不能将你的对象命名为“类”。

  2. 建议遵循Java命名约定,因此类名应以大写字母开头。

现在,关于命令行参数。你的代码中有答案:

public static void main(String[] fileNames) {
Run Code Online (Sandbox Code Playgroud)

String[] fileNames- 是命令行参数的数组。

因此,要为您的方法提供一些参数,请使用您需要的参数对其进行初始化。

就像是:

@Test
public void testMainMethod(){
   JsonFileTest.main(new String[]{"file1", "file2"});
}
Run Code Online (Sandbox Code Playgroud)

但在现实生活中,测试主要方法并不是一个好主意。它不返回任何内容,因此您只能创建一些测试来检查它是否抛出/不抛出某些异常。这个想法是测试整个逻辑。在此示例案例中,对象构造:

@Test
public void testConstructor(){
   myClass class = new myClass(new String[]{"file1", "file2"});
   /* Your assertions here */

}
Run Code Online (Sandbox Code Playgroud)