単体テストでentityManagerFactoryは動かないよ?
単体テストではentityManagerFactoryは動かないもんだとばかり思っていたら、
サンプルに思いっきり書いてたよ・・・。
んーでもDB接続すると単体テストではなくなってしまうから、
やっぱりやめたほうがいいような・・・。
やったほうがいいような・・・。
(´ε`;)ウーン…
第26章 Seamアプリケーションのテスト - seam1.2.1GA
public class RegisterActionTest { @Test public testRegisterAction() { EntityManager em = getEntityManagerFactory().createEntityManager(); em.getTransaction().begin(); User gavin = new User(); gavin.setName("Gavin King"); gavin.setUserName("1ovthafew"); gavin.setPassword("secret"); RegisterAction action = new RegisterAction(); action.setUser(gavin); action.setBookingDatabase(em); assert "success".equals( action.register() ); em.getTransaction().commit(); em.close(); } private EntityManagerFactory emf; public EntityManagerFactory getEntityManagerFactory() { return emf; } @Configuration(beforeTestClass=true) public void init() { emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager"); } @Configuration(afterTestClass=true) public void destroy() { emf.close(); } }
seam2.0.1GAはビジネスロジックだけ書くよう推奨しているよ。
33.1. Seamコンポーネントのユニットテスト
public class StatementOfAccountTest { @Test public testCalculateTotal { List invoices = generateTestInvoices(); // A test data generator double statementTotal = new StatementOfAccount().calculateTotal(invoices); assert statementTotal = 123.45; } }