単体テストでentityManagerFactoryは動かないよ?
- re_shikajiro
- Seam
- 2008年3月30日
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">"Gavin King"</span>); gavin.setUserName(<span class="synConstant">"1ovthafew"</span>); gavin.setPassword(<span class="synConstant">"secret"</span>); RegisterAction action = <span class="synStatement">new</span> RegisterAction(); action.setUser(gavin); action.setBookingDatabase(em); <span class="synStatement">assert</span> <span class="synConstant">"success"</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">"myResourceLocalEntityManager"</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はビジネスロジックだけ書くよう推奨しているよ。
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>; }
}