2017-07-25 29 views
0

我有一个黄瓜JVM + Selenium脚本。主要的方法是这样的,如何从静态主要方法依赖注入运行时参数

public static void main (String args[]) { 

    environment.environmentValue = args[0]; 
    path.pathValue = args[1]; 
    username.superUser = args[2]; 

     returnCode = Main.run(
      new String[] { "-g", "com.sanity.step.definition","-t", "@" +path , 
         featureFile.replace("\\", "\\\\") }, 
       SeparateClassloaderTestRunner.class.getClassLoader()); 
} 

我有一个构造类,即

public Class CucumberRunner; 

private ClassUtility environment; 
private Classutility pathVal; 
private ClassUtility userName; 


    public CucumberRunner(ClassUtility environment , ClassUtility pathVal, 
     ClassUtility userName) { 
      this.environment = environment; 
      this.pathVal=pathVal; 
      this.userName= userName; 

     } 

这是我classutility类,

public class ClassUtility { 

    public String environmentValue; 
    public String pathValue; 
    public String superUser; 
} 

我收到编译错误的“不能在主要方法“enviornment.environmentValue = args [0]”中对非静态字段方法做一个静态引用。那么我们如何为静态变量做依赖注入?我们可以做依赖注入f或运行时参数?

+0

此答案可能会帮助你:https://stackoverflow.com/questions/11324372/how-to-make-spring-inject-value-into-a-static-field – Thoomas

+0

@Thoomas,它如何与运行时参数呢?在我的情况下,主要方法的参数必须被注入。你能让我知道该怎么做吗? – Mathan

+0

Spring Boot可以为您处理JVM参数。您可以通过执行来检索它们:'@Value(“$ {argumentName}”)private String var'。如果这个选择适合您的需求,我可以提供一个具体的例子作为答案。 – Thoomas

回答

0

Spring Boot可以为您处理JVM参数。

启动Spring Boot App时,可以将参数注入VM参数中。

例如,java -jar yourboot.jar -DargumentName=test。 您可以通过在Spring bean(控制器,服务,...)中执行:@Value("${argumentName}") private String var来检索该值。