前提・実現したいこと
初めて、junitを活用して、テストをしています。
STS,pgadmin3とdbfluteを使用して
ローカルにあるデータベースからデータを取ってくるプログラムを作っています。
どのようにすればExceptionが発生しなくなるのでしょうか?
発生している問題・エラーメッセージ
プログラムを作ったので、junitでテストをすると NullPointExceptionが出てしまい、データを取得出来ません。 (発生箇所:ComeOn.java のコメント部分)
該当のソースコード
*都合上一部省略しているところ、名前を変更しているところがあります。
↓ソースコード1
ComeOn.java
Java
1package (src/main/java内の任意のパッケージ); 2 3import (略).ServerException; 4import (略).ServletFactory; 5import (略).MngService; 6import org.springframework.stereotype.Service; 7 8@Service 9public class test{ 10 11 MngService MngService; 12 13 public test() throws ServerException, IOException { 14 try { 15 ServletFactory.setup(); 16 } catch (ServerException | IOException e) { 17 throw e; 18 } 19 } 20 21 public void execute() { 22 // IDを基にマスタより事前に追加したレコードを取得 23 final String Id = 1; 24 Mng Info = MngService.getMng(Id); //ここでNullPointExceptionが発生 25 if (Info == null ) { 26 return; 27 } 28 } 29}
↓ソースコード2(junitでテストするコード)
ComeOnTest.java
※assertionを使っていませんがそれ以前の問題になっています。
Java
1package (src/test/java/(ComeOnTest.javaが格納されているパッケージと同名)); 2 3import static org.junit.Assert.*; 4import org.springframework.beans.factory.annotation.Autowired; 5import org.junit.Test; 6import org.springframework.beans.factory.annotation.Autowired; 7import org.thymeleaf.util.StringUtils; 8 9import (略).MngBhv; 10import (略).Mng; 11import (略).BaseSpringTest; 12import (略).MngService; 13 14public class ComeOnTest extends BaseSpringTest { 15 16 17 @Autowired 18 MngService mngService; 19 20 @Autowired 21 MngBhv mngBhv; 22 23 24 @Test 25 public void testExecute() throws Exception { 26 { 27 //対象のDBへのレコード追加(事前準備) 28 Mng recode = new Mng(); 29 recode.setId("1"); 30 recode.setTargetDate(20190122095059L); 31 mngBhv.insert(recode); 32 } 33 34 ComeOn comeOn = new ComeOn(); 35 comeOn.execute(); 36 37 } 38}
↓ソースコード3(Exception発生部分のもとのコード)
MngService.java
Java
1package (ComeOn.javaと同一パッケージ).service; 2 3import org.apache.commons.lang3.StringUtils; 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.context.annotation.Scope; 6import org.springframework.stereotype.Service; 7 8import (略).dbflute.exbhv.MngBhv; 9import (略).dbflute.exentity.Mng; 10 11@Scope("prototype") 12@Service 13public class MngService { 14 15 @Autowired 16 private MngBhv mngBhv; 17 18 /** 19 * 主キー(バッチID)に該当するレコードを返却する 20 * @param Id ID 21 * @return 主キーに一致するレコード 22 */ 23 public Mng getMng(String Id) { 24 if (StringUtils.isBlank(Id)) { 25 throw new IllegalArgumentException(String.format("IDが不正です。)); 26 } 27 return mngBhv.selectByPKValue(Id); 28 } 29}
試したこと
- pgadminの方には、準備したデータが作成されていました。
- 強引ですが、試しにComeonTest.javaのtestExecute()内にComeon.javaのexcute()内の処理を書き、
ComeOn.javaのexcute()内の処理をコメントアウトして実行したところExceptionが発生しませんでした。
補足情報(FW/ツールのバージョンなど)
すみません、インストールしたときのファイル名を記載します。
pgadmin:3-1.22.1
sts:2.1.2.5
vagrant:1.9.3
いくつか類似質問を見たのですが理解できずいてる次第です。。。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/23 02:58
2019/01/24 02:29