2017-02-16 31 views
3

我哈瓦這個代碼在ApplicationContext,@RunWith(SpringJUnit4ClassRunner.class)來無法加載一個NULL '的ContextLoader'

@RunWith(SpringJUnit4ClassRunner.class) 
public class JunitDemo { 

    @Test 
    public void testAssertArrayEquals() { 

     byte[] expected = "trial".getBytes(); 
     byte[] actual = "trial".getBytes(); 

     Assert.assertArrayEquals("fail", expected, actual); 
    } 
} 

和運行測試,也有由導致的錯誤

: java.lang.IllegalArgumentException:無法使用NULL'contextLoader'加載 ApplicationContext。考慮使用@ContextConfiguration註釋您的測試類 。 at org.springframework.util.Assert.notNull(Assert.java:112) at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:276) at org.springframework.test.context.TestContext。 getApplicationContext(TestContext.java:304) ...... 28多個

然後,我發現SO同一Q,解決的辦法是

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration 
public class JunitDemo { 

    @Resource 
    private ApplicationContext ApplicationContext; 

    @Test 
    public void testAssertArrayEquals() { 

     byte[] expected = "trial".getBytes(); 
     byte[] actual = "trial".getBytes(); 

     Assert.assertArrayEquals("fail", expected, actual); 
    } 
} 
其實

,該POJO,我做」 nt需要xml配置。 ,我會得到其他錯誤

產生的原因:java.io.FileNotFoundException:類路徑資源 [/JunitDemo-context.xml]不能打開,因爲它根本不存在org.springframework.core 。 io.ClassPathResource.getInputStream(ClassPathResource.java:158) 在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) ...... 37多個

如何才能正確運行我的程序?

+0

你的應用程序中是否有任何'@ Configuration'類?或者你使用基於xml的配置? –

+0

我很抱歉這麼晚回覆,我沒有任何配置文件,我不需要它。 –

回答

0

添加這樣的事情

@ContextConfiguration(locations = {"/test-spring.xml"}) 

在XML包含測試環境(在最簡單的情況下,它同應用程序上下文)來加載/自動裝配所有依賴

0

@ContextConfiguration文檔:

@ContextConfiguration定義了用於 的類級別元數據,用於確定如何爲 集成測試加載和配置ApplicationContext。

註釋本身具有財產loader和醫生說:

如果沒有指定,裝載機將從第一 超被註釋與@ContextConfiguration並指定 明確的裝載機被繼承。如果層次結構中沒有類指定顯式的 加載程序,則將使用默認加載程序。

在運行時選擇的默認具體實現。

因此,您可以直接使用loader屬性指定上下文loader。要導航到直接配置,請對xml使用locations,對於帶註釋的類配置,請使用classes

在你的情況下看起來像背景下裝載選擇GenericXmlContextLoader春天,所以ApplicationConext將被載入你不指定位置「類路徑:/ COM /例子/ < 您 _test_class_name> -context.xml」

這是關於它的good article

相關問題