【问题标题】:Set a static member in main method and access in a Junit Method在 main 方法中设置静态成员并在 Junit 方法中访问
【发布时间】:2014-12-26 17:52:32
【问题描述】:
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 的情况打印。但是对于 2 null 正在打印,即使我已经在 main 方法中设置了变量。为什么会发生这种情况?解决这个问题的方法是什么?

【问题讨论】:

  • 在 JUnit 测试中未调用 main 方法。另请参阅 [stackoverflow.com/questions/2884163/... [1]:stackoverflow.com/questions/2884163/...
  • @laune 我将这个程序作为 java 应用程序运行。所以执行开始于main
  • @boxed__l 我希望变量具有从命令行传递的值。
  • @Alex 看看这个 SO Question。 JUnit Test Method with Arguments

标签: java junit command-line-arguments


【解决方案1】:

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

JUnitCore.runClasses(A.class);

【讨论】:

    【解决方案2】:

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

    $ 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 测试运行。

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 2023-03-06
      • 1970-01-01
      • 2016-01-13
      • 2023-01-13
      • 1970-01-01
      • 2018-05-30
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多