Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在main方法中设置静态成员,在Junit方法中设置访问权限_Java_Junit_Command Line Arguments - Fatal编程技术网

Java 在main方法中设置静态成员,在Junit方法中设置访问权限

Java 在main方法中设置静态成员,在Junit方法中设置访问权限,java,junit,command-line-arguments,Java,Junit,Command Line Arguments,我有类似于上面的代码。我希望通过命令行传递的值在1和2情况下打印出来。但是对于2null正在打印,即使我已经在main方法中设置了变量。为什么会发生这种情况?解决此问题的方法是什么?将主要方法的最后一行更改为: public class A { private static String var; public static void main(String []args) { var = args[0]; System.out.println(var);

我有类似于上面的代码。我希望通过命令行传递的值在
1
2
情况下打印出来。但是对于
2
null
正在打印,即使我已经在main方法中设置了变量。为什么会发生这种情况?解决此问题的方法是什么?

将主要方法的最后一行更改为:

public class A {
   private static String var;
   public static void main(String []args) {
      var = args[0];
      System.out.println(var);  //1
      JunitCore.main("path.A");
   }

   @Test
   public void test() {
       System.out.println(var);  //2
   }
}

我发现这段代码按预期工作

JUnitCore.runClasses(A.class);
只进行了一些更改

$ ls path/
A.class
$ echo $CLASSPATH 
.:/extra/JUnit/junit-4.12.jar:/extra/JUnit/hamcrest-core-1.3.jar
$ java path.A xyz
from main: xyz
JUnit version 4.12
.xyz
Time: 0.003
OK (1 test)
提议的

package path;
import org.junit.runner.JUnitCore;
import org.junit.*;

也会生成第二个println,但方法测试不会作为JUnit测试运行。

JUnit测试中不会调用main方法。另请参见[stackoverflow.com/questions/2884163/…[1]:stackoverflow.com/questions/2884163/…@laune我正在以java应用程序的形式运行此程序。因此执行从
main
@boxed\l开始。我希望变量的值从命令行传递。@Alex看一下这个问题。
JUnitCore.runClasses(A.class);