0

私は今、1つの苛立たしい問題を抱えています。自動配線が原因でテストが失敗します。

フィールドを自動配線できませんでした:private k.dao.CompanyDao k.dao.CompanyDaoTest.companyDao; ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです:依存関係に一致するタイプ[k.dao.CompanyDao]のBeanが見つかりません:この依存関係のautowire候補として適格な少なくとも1つのBeanが必要です。

@ContextConfigurationが問題になる可能性があると思いますか?

テスト

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:**/servlet-context.xml", "classpath:**/root-context.xml", "classpath:**/ccc-jpa.xml" })
public final class CompanyDaoTest {

    @Autowired
    private CompanyDao companyDao;

    @Test
    public void testTest() {

    }
}

CompanyDao

public interface CompanyDao extends GenericDao<Company> {

}

CompanyDaoJpa

@Repository("companyDao")
public class CompanyDaoJpa extends GenericDaoJpa<Company> implements CompanyDao {

    public CompanyDaoJpa() {
        super(Company.class);
    }
}

GenericDao

public interface GenericDao<T extends DomainObject> {

    public T get(Long id);

    public List<T> getAll();

    public T save(T object);

    public T delete(T object);

}

サーブレット-context.xml

    <annotation-driven />

    <context:component-scan base-package="k"/>
4

1 に答える 1

5

テストがまったく読み込まれないと思いますservlet-context.xml

servlet-context.xmlクラスパスリソースとして参照しますservlet-context.xmlが、通常はWEB-INF、アプリケーションのクラスパスの一部ではないの下にあります。Springは、ワイルドカード(classpath:**/servlet-context.xml)で参照されている場合、構成ファイルの欠落について文句を言わないため、構成ファイルが見つからない場合でもテストはサイレントに開始されることに注意してください。

WEB-INFユニットテストからにあるSpringxmlファイルにアクセスする良い方法はありません。それらに対してテストを実行する場合は、それらをクラスパスに移動する必要があります(つまり、プロジェクトのレイアウトに応じて、srcまたはのようなものに移動します)。の下にこれらのファイルが見つかることを期待しているresourcesので、それぞれのパラメーターを使用してファイルを再構成する必要もあります。たとえば、次の場合:DispatcherServletContextLoaderListenerWEB-INFcontextConfigLocationDispatcherServlet

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:**/servlet-config.xml</param-value>
</init-param>
于 2011-11-17T10:49:25.160 に答える