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);