2017-09-02 5 views
1

私はSpringbootとHibernateを使ってアプリケーションを作成しました。SpringBootでDAOレイヤーのユニットテストを設定する

これはDAOインターフェイスです。

public interface OrderDetailsDao { 
    void createOrder(OrderDetails orderDetails); 
    void updateOrder(OrderDetails orderDetails); 
    void deleteOrder(OrderDetails orderDetails); 
} 

これはその後、私は、私は両方のテストのリソースにapplication.propertiesファイルを入れている、次の

@RunWith(SpringJUnit4ClassRunner.class) 
public class OrderDetailsDaoTest { 

    OrderDetails orderDetails = new OrderDetails(); 

    @Autowired 
    OrderDetailsDao orderDetailsDao; 

    @Test 
    public void testCreateOrder(){ 
     orderDetails.setValue(101.91); 
     orderDetailsDao.createOrder(orderDetails); 
    } 
} 

としてテストクラスを作成したDAOインタフェースimplemnetation

public class OrderDetailsDaoImpl extends HibernateDaoSupport implements OrderDetailsDao { 

    public void createOrder(OrderDetails orderDetails){ 
     getHibernateTemplate().save(orderDetails); 
    } 

    public void updateOrder(OrderDetails orderDetails){ 
     getHibernateTemplate().save(orderDetails); 
    } 

    public void deleteOrder(OrderDetails orderDetails){ 
     getHibernateTemplate().delete(orderDetails); 
    } 
} 

ですsrcディレクトリに移動します。

私はこのユニットテストケースを実行しようとしたが、それは次のエラーのため失敗します。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.abdul.epl.repo.OrderDetailsDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

は、だから私は、DAO層のためのユニットテストを設定するための最良の方法を喜ば知っているだろうか?

+1

アプリケーションに関する十分な情報を共有していません。 'OrderDetailsDaoImpl'はSpring Beanとしてどこに設定されていますか?コンポーネントのスキャンや '@Configuration'クラスの' @ Bean'メソッドで見つかると思いますか? [完全な最小例](/ help/mcve)は問題をより明確にします。 –

答えて

1

テストクラスに@SpringBootTestアノテーションを付けて、Springアプリケーションのコンテキスト(したがってすべてのSpring Bean)をテストで利用できるようにする必要があります。さらに、SpringBunitでSpringJunit4ClassRunnerの代わりにSpringRunnerを使用する必要があります。すなわち:

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class OrderDetailsDaoTest { 

これはまだ動作しない場合は、あなたのDAOクラスをスキャンコンポーネントのスキャンを含む構成クラスは@ContextConfigurationアノテーションを使用して見つけることができる場所を直接指定する必要があります。ただし、通常はSpringBootを使用する場合は必要ありません。

0

Sos un genio pibe。 Hace horas estoy con esto。

Gracias!

関連する問題