1

次のような構成のjunitテストクラスがあります。

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({ WebContextTestExecutionListener.class,
        DependencyInjectionTestExecutionListener.class,
        DirtiesContextTestExecutionListener.class,
        TransactionalTestExecutionListener.class })
@ActiveProfiles("test")
@DirtiesContext
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {
        SpringConfig.class, SpringTestingConfig.class,
        SpringLocalContainerJPAConfig.class, CustomConfiguration.class })

テストメソッドはサービスメソッドを呼び出しており、サービスクラスには@Transactional何らかの理由で注釈があります。サービスメソッドのテストケースを作成すると、失敗しorg.hibernate.PersistentObjectException: detached entity passed to persist、この投稿のように例外が発生します: org.hibernate.PersistentObjectException: detached entity passed to persistメモリデータベースでH2を使用し 、この例外を修正するには、テストクラスに注釈を付ける必要がありますが、マネージドBeanでは同じコードを呼び出すと正常に動作するため、テストで時々必要になる理由と、いつ注釈を付ける必要があるかが@Transactional私の質問ですサービス層にこのアノテーションがあることを考慮して@Transactionalクラスをテストします。@Transactional

4

0 に答える 0