2013-10-10 58 views
0

我想測試一個通過@Autowired註釋注入資源的類。測試類中的春季JUnit測試自動佈線變量

class TestedClass{ 
    @Autowired 
    private MyResource resource 
    ... 
} 

如何在不修改被測試的類的情況下使該注入工作?注射在測試類工作正常,但不是在被測試類:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations= "classpath*:/bean-definition.xml") 
    public class TestedClassTest { 
    TestedClass instance; 

    //This works 
    @Autowired 
    private MyResource resource 

    @Before 
    public void setUp() throws Exception { 
    instance = new TestedClass(); 
    } 
... 
} 

所以問題可能是如何上下文傳遞給被測試類?

回答

1

注入TestedClass不創建與new(),我認爲它是一個bean。或者使用setter或構造函數將myResource注入到testedClass中。

+0

沒有測試過的類不是一個bean,它只使用注入的資源。是否有意義?還是它也必須是一個bean?我知道我可以通過setter或構造函數來實現,但我認爲必須有某種方法才能在不修改代碼的情況下執行此操作。 – NeplatnyUdaj

+0

如何在應用程序部署時將被測試類實例化,就好像它沒有被注入一樣,我的資源將不會被設置。所以它沒有意義。 – NimChimpsky

+0

好的。所以我創建了一個測試類的'''Component',現在它可以工作。謝謝 – NeplatnyUdaj