2017-07-25 13 views
0

私はキュウリのJVM + Seleniumスクリプトを持っています。主な方法は、すなわち静的メインメソッドからランタイム引数を挿入する方法

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

で、私はコンストラクタクラスを持って、このような何か、

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

ですメインメソッド "enviornment.environmentValue = args [0]"の非静的フィールドメソッドへの静的参照を作成することはできませんので、静的変数に対する依存性注入はどのように行いますか?またはランタイム引数?

+0

この回答は役に立ちます:https://stackoverflow.com/questions/11324372/how-to-make-spring-inject-value-into-a-static-field – Thoomas

+0

@Thoomas、それはどのようにランタイムで動作しますか議論?私の場合、mainメソッドからの引数を注入する必要があります。あなたは私にそれをする方法を教えてもらえますか? – Mathan

+0

SpringブートはJVMの引数を扱うことができます。 '@Value(" $ {argumentName} ")private String var'を実行すると、それらを取得できます。これがあなたのニーズに合ったオプションであれば、答えとして具体的な例を挙げることができます。 – Thoomas

答えて

0

Spring Bootは、あなたのためにJVM引数を処理できます。

Springブートアプリケーションを起動するときに、VM引数としてパラメータを注入できます。例えば、java -jar yourboot.jar -DargumentName=test。 春の豆(コントローラー、サービスなど)で@Value("${argumentName}") private String varを実行して値を取得できます。

関連する問題