在main方法中设置静态成员并在Junit方法中进行访问

时间:2014-12-26 07:42:25

标签: java junit command-line-arguments

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
   }
}

我的代码与上面类似。我希望通过命令行传递的值可以打印在12个案例中。但是,即使我在main方法中设置了变量,也会打印2 null。为什么会发生这种情况?这个问题的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

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

JUnitCore.runClasses(A.class);

答案 1 :(得分:1)

我发现此代码按预期工作。

$ 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.*;

建议

JUnitCore.runClasses(A.class);

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