1. ホーム
  2. unit-testing

[解決済み】Javaプロジェクト。ApplicationContextのロードに失敗しました

2022-01-21 23:45:34

質問

私は、簡単なJUNITテストケースを書いているJavaプロジェクトを持っています。 私は、applicatinoContext.xmlファイルをjavaのソースディレクトリのルートにコピーしています。 StackOverflowで読んだ推奨設定をいくつか試してみましたが、まだ同じエラーが発生します。 このエラーは、私のプロジェクトがWebプロジェクトではなく、Javaプロジェクトであるために起こっているのでしょうか、それとも、それは重要なことなのでしょうか? どこで間違っているのかわかりません。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"C:/projs/sortation/src/main/java/applicationContext.xml"})
// Also tried these settings but they also didnt work,
//@ContextConfiguration(locations={"classpath:applicationContext.xml"})
//@ContextConfiguration("classpath:applicationContext.xml")
@Transactional
public class TestSS {

    @Autowired
    private EmsDao dao;

    @Test
    public void getSites() {

        List<String> batchid = dao.getList();

        for (String s : batchid) {
            System.out.println(s);
        }
    }
}

解決するには?

mavenを使っているようですね( {コード . この場合 src/main/java) ファイルを applicationContext.xml ディレクトリに移動します。これはクラスパス・ディレクトリにコピーされ、次のようにアクセスできるようになります。

src/main/resources

から Spring-Documentation(英語 : 例えば "context.xml "のようなプレーンなパスは、クラスパス・リソースとして扱われます。 テストクラスが定義されているのと同じパッケージからのものであること . スラッシュで始まるパスは 完全修飾クラスパスの場所 例えば、"/org/example/config.xml" のようなものです。

そのため、クラスパスのルートディレクトリにあるファイルを参照する際には、スラッシュを追加することが重要です。

絶対ファイルパスで作業する場合は、'file:C:...'を使用する必要があります。を使う必要があります (ドキュメントを正しく理解していれば)。