[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 メーリングリストの案内