2017-06-09 15 views
0

私はSpring Web MVCプロジェクトで作業し、データベース操作のためのテストを書きます。テストクラスは、プロジェクトの構造は、私はそれがない、のでdatasource.xmlは、開くことができない旨のエラーを取得し、以下java.io.FileNotFoundException:クラスパスのリソースを開くことができません

enter image description here

を提供する

@ActiveProfiles("dev") 
@ContextConfiguration(locations = { 
     "classpath:com/puut/bitcoin/config/dao-context.xml", 
//  "classpath:com/puut/bitcoin/config/security-context.xml", 
     "classpath:com/puut/bitcoin/dao/test/config/datasource.xml" 
}) 

@RunWith(SpringJUnit4ClassRunner.class) 
public class OfferDaoTests { 

    @Autowired 
    private DataSource dataSource; 

    @Autowired 
    private OffersDao offersDao; 

    @Before 
    public void init() { 
     JdbcTemplate jdbc = new JdbcTemplate(dataSource); 

     jdbc.execute("delete from offers"); 
     jdbc.execute("delete from users"); 
     jdbc.execute("delete from authorities"); 
    } 

    @Test 
    public void testCreateUser() { 

     Offer offer = new Offer("johnwpurcell", "[email protected]", "This is a test offer."); 

     assertTrue("Offer creation should return true", offersDao.create(offer)); 

     List<Offer> offers = offersDao.getOffers(); 

     assertEquals("Should be one offer in database.", 1, offers.size()); 

     assertEquals("Retrieved offer should match created offer.", offer, offers.get(0)); 

     // Get the offer with ID filled in. 
     offer = offers.get(0); 

     offer.setText("Updated offer text."); 
     assertTrue("Offer update should return true", offersDao.update(offer)); 

     Offer updated = offersDao.getOffer(offer.getId()); 

     assertEquals("Updated offer should match retrieved updated offer", offer, updated); 

     offersDao.delete(offer.getId()); 

     List<Offer> empty = offersDao.getOffers(); 

     assertEquals("Offers lists should be empty.", 0, empty.size()); 
    } 
} 

、以下に提供されます存在する。その存在は確かにあり、その道も正しいです。 datasource.xmlファイルで

Caused by: java.io.FileNotFoundException: class path resource [com/puut/bitcoin/dao/test/config/datasource.xml] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 

、私はApplication context is not configured for this fileIntelliJがこれを行うには、いくつかのオプションを文字通り提供されていることがわかります。私は、次のようにOfferDaoTestsでこのファイルを定義しているので、これは私にとって非常に明確ではありません

enter image description here

@ContextConfiguration(locations = { 
      "classpath:com/puut/bitcoin/config/dao-context.xml", 
    //  "classpath:com/puut/bitcoin/config/security-context.xml", 
      "classpath:com/puut/bitcoin/dao/test/config/datasource.xml" 
    }) 

私はweb.xmlようにファイルを定義するポイントが表示されませんよくこれは、データベース操作をテストするためだけです。また、少し前にここにいなかったweb.xmlに突然何らかのエラーが発生します。 enter image description here

+0

仮定する 'datasource.xml'あなたは –

+0

がクラスパス上の' test'です正しく参照しているわけではないですテストパッケージにありますか? –

+0

'IntellIJ'から' classpath'を自動的に '(CMD + ALT + SHIFT + C)'にして正しいと思われます。私は 'src'から完全なクラスパスを使用しようとしました。それは助けにもならない。 – Arefe

答えて

1

documentationのように、@ContextConfigurationはリソースを検索します。したがって、resourceフォルダを作成することができます。/testフォルダの下に、com/puut/bitcoin/dao/test/config/datasource.xmlという構造を持つフォルダを作成することができます。このようにして、スプリング構成はテストのためのリソースを読み取ることができるはずです。だから、あなたのフォルダ構造は次のようになります。

/test/java - contains your test cases 
/test/resources - contains your XML/configuration files 
+0

「テスト/リソース/」の中にすべてを入れなければならないのですか? – Arefe

+0

'/ test'の意味です。 'test/java'にはテストケースが含まれ、' test/resources'にはXMLファイル/リソースが含まれます。 – YuVi

関連する問題