0

インジェクションが正しく初期化されていないため、ヌルポインターエラーが発生することがわかりました。それを修正する方法が正確にはわかりません。Spring Javaベースのダイレクトインジェクションの初期化によるヌルポインタエラー

私はmain(CommonElements.java)、Constructor.java(bean)、およびDriver.java(メインコードがある)の3つのファイルを持っています。

commomelementsに注入されたdriver.javaを取得しようとすると、実行時にnullポインタ例外が発生します。

それぞれのコードは次のとおりです。どんな助けでも大歓迎です。

CommonElements.java

package PageFactory; 

import org.junit.Test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.*; 

public class CommonElements { 

private Driver web; 

    ApplicationContext ctx = new AnnotationConfigApplicationContext(Constructor.class);  
    Driver page = ctx.getBean(Driver.class); 

    @Test 
    public void Common(final Driver web) 
    { 
     this.web = web; 
     web.setup(); 
    } 
} 

Constructor.java

package PageFactory; 

import org.springframework.context.annotation.*; 

//constructor 
@Configuration //using java dependency injection 
public class Constructor { 
    @Bean 
    public Driver driver() { 
     return new Driver(); 
    } 

} 

Driver.java

package PageFactory; 

import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 

public class Driver { 

    private String baseUrl; 

    public void setup() { 
     final WebDriver driver; 
     System.setProperty("webdriver.chrome.driver", 
     "drivers/chromedriver.exe"); //location of driver 
     ChromeOptions options = new ChromeOptions(); 
     driver = new ChromeDriver(options); 
     baseUrl = "https://www.google.com"; 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 

} 
+0

あなたはスタックトレースを投稿することができます:春

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration // i'm not 100% sure this one is needed public class CommonElements { ... } 

参照を初期化するJUnitの?また、デバッガを使用してコードを実行しましたか? –

+0

デバッガを実行することさえありません。 起動中のコメントElemetnsに問題が発生しました: 「CommonElements(1)の起動中」の内部エラーが発生しました。 java.lang.NullPointerException – JST

答えて

0

編集:私はJUnitのは、中にドライバーBeanを注入することができますかわかりませんあなたのテスト方法は、このようなものを試すことができます

あなたはおそらく私が

の下に提案するものは必要ありません手動で春のコンテキストを初期化しているので、また
package PageFactory; 

import org.junit.Test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.*; 

public class CommonElements { 

private Driver web; 

    ApplicationContext ctx = new AnnotationConfigApplicationContext(Constructor.class);  
    Driver page = ctx.getBean(Driver.class); 

    @Test 
    public void Common() 
    { 
     page.setup(); 
    } 
} 

古い答え:私はあなたが欲しい場合は、テストクラスにこの注釈を追加する必要があると思う

link

+0

hmmm、どちらもうまくいきませんでした。手伝ってくれてありがとう! – JST

+0

ああ...私はgetDriver()またはsetDriver()メソッドを持っていません。それは助けるかもしれません... – JST

+0

mh私はあなたが何とかjunitがテストメソッドであなたのbeanを注入させようとしていることに気づいた、私はそれを使用して見たことがない、私はドライバのパラメータを削除しようとするとpage.setup )あなたのテストで 私はコードを表示する答えを編集しています –

関連する問題