簡體   English   中英

在JUnit中自動連線:僅綁定Test類中的字段,而不綁定其他類中的字段

[英]Autowired in JUnit: only binds fields in Test class, not in other classes

我有以下測試課程:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/**/context.xml")
public class HAD_Test extends TestCase {

    @Autowired
    private UgcService ugcService;

    @Test
    public void test() {
        // this binding works fine
        Ugc ugc = ugcService.getRegistro(138355);
        ...
        HAD_Data dData = new HAD_Data(ugc);
        data.init();
        ...
    }
}

然后我有另一堂課:

public class HAD_Data {
    @Autowired
    private ClimaService climaService;

    public void init() {
        ...
        // at this point, climaService is null
        climaService.getRegistro(556)
        ...
    }
}

我遇到的問題是Test類中的綁定被完美地應用了,但是在我使用的任何類中(例如HAD_Data),如果存在其他自動連接的字段,這些字段都不會被綁定。 它們始終為空值。

我真的不知道為什么未分配這些綁定。 有人可以幫我嗎? 如果有任何其他信息是必要的,我可以包括在內,但是我認為我的context.xml是正確的,因為存在一些應用的綁定可以。

謝謝,馬克

如果您是創建對象的人,您如何期望Spring注入字段?

HAD_Data dData = new HAD_Data(ugc);

Spring只能自動連線托管的bean。

context.xmlHAD_Data添加一個bean聲明並使用它。 您還可以在init()方法上使用@PostConstruct ,以便Spring初始化后負責對其進行調用。


另外,請注意,Java約定不鼓勵在類名中使用_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM