単体テストでentityManagerFactoryは動かないよ?

Table of Contents

単体テストではentityManagerFactoryは動かないもんだとばかり思っていたら、

サンプルに思いっきり書いてたよ・・・。

んーでもDB接続すると単体テストではなくなってしまうから、

やっぱりやめたほうがいいような・・・。

やったほうがいいような・・・。

(´ε`;)ウーン…

第26章 Seamアプリケーションのテスト - seam1.2.1GA

public class RegisterActionTest
{
<span class="synPreProc">@Test</span>
<span class="synType">public</span> testRegisterAction()
{
    EntityManager em = getEntityManagerFactory().createEntityManager();
    em.getTransaction().begin();
    
    User gavin = <span class="synStatement">new</span> User();
    gavin.setName(<span class="synConstant">&#34;Gavin King&#34;</span>);
    gavin.setUserName(<span class="synConstant">&#34;1ovthafew&#34;</span>);
    gavin.setPassword(<span class="synConstant">&#34;secret&#34;</span>);
    
    RegisterAction action = <span class="synStatement">new</span> RegisterAction();
    action.setUser(gavin);
    action.setBookingDatabase(em);
    
    <span class="synStatement">assert</span> <span class="synConstant">&#34;success&#34;</span>.equals( action.<span class="synError">register</span>() );
    
    em.getTransaction().commit();
    em.close();
}


<span class="synType">private</span> EntityManagerFactory emf;

<span class="synType">public</span> EntityManagerFactory getEntityManagerFactory()
{
    <span class="synStatement">return</span> emf;
}

<span class="synPreProc">@Configuration</span>(beforeTestClass=<span class="synConstant">true</span>)
<span class="synType">public</span> <span class="synType">void</span> init() 
{
    emf = Persistence.createEntityManagerFactory(<span class="synConstant">&#34;myResourceLocalEntityManager&#34;</span>);
}

<span class="synPreProc">@Configuration</span>(afterTestClass=<span class="synConstant">true</span>)
<span class="synType">public</span> <span class="synType">void</span> destroy()
{
    emf.close();
}

}

seam2.0.1GAはビジネスロジックだけ書くよう推奨しているよ。

33.1. Seamコンポーネントユニットテスト

public class StatementOfAccountTest {
<span class="synPreProc">@Test</span>
<span class="synType">public</span> testCalculateTotal {
   List invoices = generateTestInvoices(); <span class="synComment">// A test data generator</span>
   <span class="synType">double</span> statementTotal = <span class="synStatement">new</span> StatementOfAccount().calculateTotal(invoices);
   <span class="synStatement">assert</span> statementTotal = <span class="synConstant">123.45</span>;
}   

}