2012-03-29 17 views
0

SpringでJunitテストケースを作成しています。Spring Junitテストの問題

private static BeanFactory servicefactory = null; 
private static BookingProcessService bookingProcessService; 
@BeforeClass 
public static void setUpBeforeClass() throws Exception{ 
    try{ 
     String[] configFiles = {"applicationcontext-Service.xml","applicationcontext-Hibernate.xml","applicationContext-dao.xml"}; 
     ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(configFiles); 
     servicefactory = (BeanFactory) appContext; 
     bookingProcessService = (BookingProcessService) servicefactory.getBean("bookingProcessService");    
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

ここで、BookingProcessServiceは、インターフェイスであり、実装クラスはBookingProcessServiceImpl.javaです。 春の設定ファイルには、Bean IDが定義されていません。 テストメソッドでBookingProcessImp.javaで記述された実際のメソッド定義を呼び出すために 'bookingProcessService'を使用する方法はありますか?

答えて

0

このテストを設定している場合は、注釈を使用することをお勧めします。

通常、 "applicationcontext-Service.xml"には、実装で定義されたBeanが必要であり、このクラスのInterfaceを使用するクラスです。

これでコードを実装と結合しません。簡単なこの例では

は、次の操作を行う必要があります。あなたのxml構成「のApplicationContext-service.xmlに」からIOCを行います春から@Autowired

@Autowired 
private BookingProcessService bookingProcessService; 

注釈を。

+0

"applicationcontext-Service.xml"には、BookingProcessService用にBeanが定義されていません。では、どうすればBookingProcessService実装オブジェクトを取得し、これに対してテストケースを書くことができますか? – Anand

+0

Spring用にBeanをインジェクトしていない場合は、別のオブジェクトにインジェクトすることはできません。次に、 - ReservationProcessService bookingProcessService = new BookingProcessServiceImpl()のように、テストで新しいインスタンスを作成して、そのインスタンスをテストに追加する必要があります。 SpringにIOCを行い、Singletonインスタンスを持つことを定義することをお勧めします。 –

関連する問題