[Seasar-user:13908] [Dbflute] Junitテストの時Bhvがnullになります。
Yuu
[E-MAIL ADDRESS DELETED]
2008年 4月 24日 (木) 11:44:35 JST
いつもお世話になっております。
今日はテストについて質問があります。
普通の時は問題ないbhv処理が
(system.out.printlnして見たら
[E-MAIL ADDRESS DELETED]とnullではなく
何か値が入っています。)
Junitテストする時だけ
Nullになってsystem.out.printlnして見てもnullになっています。
(テストクラスにSystem.out.println(registerPage.userdetailsBhv);してみたら
nullが確認できます。registerPage自体のsystem.out.printlnにもnullです。)
この理由でnullPointExceptionで発生しテストが出来なくなります。
テストクラスのsetUp()は
@Before
public void setUp() throws Exception {
include("dbflute.dicon");
}
でしたが
@Before
public void setUp() throws Exception {
super.setUp();
include("dbflute.dicon");
include("jdbc.dicon");
include("app_aop.dicon");
include("app.dicon");
include("customizer.dicon");
include("teedaCustomize.dicon");
include("s2container.dicon");
include("creator.dicon");
include("convention.dicon");
}
までやって見てもbhvのnull問題が解消できません。
今テストクラスのソースを記述します。
package sampleproject.web.login;
import java.util.Random;
import org.seasar.extension.unit.S2TestCase;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import sampleproject.web.login.RegisterPage;
import sampleproject.dbflute.exbhv.UserdetailsBhv;
import sampleproject.dbflute.exdao.pmbean.SimpleselectUserdetailspmb;
import sampleproject.dbflute.exentity.Userdetails;
import sampleproject.dbflute.exentity.Users;
import sampleproject.dbflute.exentity.customize.SimpleUserdetails;
public class RegisterPageTest extends S2TestCase {
RegisterPage registerPage = new RegisterPage();
//UserdetailsBhv userdetailsBhv = new UserdetailsBhv();
@Before
public void setUp() throws Exception {
super.setUp();
include("dbflute.dicon");
include("jdbc.dicon");
include("app_aop.dicon");
include("app.dicon");
include("customizer.dicon");
include("teedaCustomize.dicon");
include("s2container.dicon");
include("creator.dicon");
include("convention.dicon");
}
@Test
public void testDoSave() {
final Class<SimpleUserdetails> entityType = SimpleUserdetails.class;
final SimpleselectUserdetailspmb pmb = new SimpleselectUserdetailspmb();
UserdetailsBhv userdetailsBhv;
Random a= new Random();
registerPage.uid = "t"+a.nextInt(999);
System.out.println(registerPage.userdetailsBhv);
Class result = registerPage.doSave();
assertNotNull(result);
assertNotNull(registerPage.userexistmsg);
}
@Test
public void testUsercheck() {
registerPage.uid = "test";
assertFalse(registerPage.usercheck());
}
@Test
public void testInitialize() throws Exception {
Boolean result =true;
try {
registerPage.initialize();
}catch(Exception e){
result = false;
throw e;
}
assertTrue(result);
}
@Test
public void testPrerender() throws Exception {
Boolean result =true;
try {
registerPage.prerender();
}catch(Exception e){
result = false;
throw e;
}
assertTrue(result);
}
}
テスト対象のRegisterPage.java
package sampleproject.web.login;
import java.util.List;
import org.seasar.teeda.extension.annotation.validator.Length;
import org.seasar.teeda.extension.annotation.validator.Required;
import org.seasar.teeda.extension.util.LabelHelper;
import sampleproject.dbflute.cbean.UserdetailsCB;
import sampleproject.dbflute.cbean.UsersCB;
import sampleproject.dbflute.exbhv.UserdetailsBhv;
import sampleproject.dbflute.exbhv.UsersBhv;
import sampleproject.dbflute.exdao.pmbean.SimpleselectUserdetailspmb;
import sampleproject.dbflute.exentity.Userdetails;
import sampleproject.dbflute.exentity.Users;
import sampleproject.dbflute.exentity.customize.SimpleUserdetails;
import sampleproject.web.test.CommonText;
public class RegisterPage {
public String uid;
public String name;
public String add;
public String email;
public LabelHelper lp;
public String passid;
public String userexistmsg;
public UsersBhv usersBhv;
public UserdetailsBhv userdetailsBhv;
/**
* id登録処理
* @return class
*/
public Class doSave() {
boolean userchk;
userchk = usercheck();
if (userchk){
userexistmsg = lp.getLabelValue("userexist");
return null;
}
else
{
insert();
return LoginPage.class;
}
}
/**
* id重複チェック
* @return boolean
*/
public boolean usercheck(){
final Class<SimpleUserdetails> entityType = SimpleUserdetails.class;
final SimpleselectUserdetailspmb pmb = new SimpleselectUserdetailspmb();
pmb.setUserid(uid);
System.out.println(userdetailsBhv + "null check!");
final List<SimpleUserdetails> resultList = userdetailsBhv.outsideSql().selectList(CommonT
ext.SELECTUSERDETAILSPATH,pmb, entityType);
if (resultList.size() > 0){
return true;
}
else{
return false;
}
}
public void initialize() {
}
public void prerender() {
}
}
問題の部分
テストクラスの
Class result = registerPage.doSave(); 部分でnullPointException
テスト対象クラスの
final List<SimpleUserdetails> resultList = userdetailsBhv.outsideSql().selectList(CommonTex
t.SELECTUSERDETAILSPATH,pmb, entityType);
部分のuserdetailsBhvがテストの時だけnullになる。
解消する方法をしてる方、お答えお願いいたします。
Seasar-user メーリングリストの案内