2015-02-08 36 views
1

我有一個類,其中一些字段是@Autowired,有些不是,在測試類中,我希望不僅爲@Autowired字段自動注入值。但自動注入只發生在@Autowired字段中。JMockit's @Injectable for non-Autowired fields

下面是一個例子:

public class SimpleObject { 
    Long id; 
    @Autowired UsersDAO usersDAO; 
} 


public class SimpleTest { 

    @Tested SimpleObject testedSimpleObject; 
    @Injectable @Mocked UsersDAO usersDAO; 
    @Injectable Long id = new Long(200); 

    @Test 
    public void testId() { 
     assertNotNull(testedSimpleObject); 
     assertNotNull(testedSimpleObject.id); 
    } 
} 

測試將在第二行上失敗。 id字段不是自動注入的。 但是,如果我從UsersDAO中刪除@Autowired註釋,則測試通過。

爲什麼會這樣呢? 我該如何克服這個問題? 據我所知,我可以添加一些其他註釋到ID字段,但我想,如果可能的話,解決它,而無需更改原始源代碼。

回答

1

這是由於在JMockit 1.14的錯誤,但它已經固定下一個版本,1.15(因爲出來以後年02月/ 2015年)。