我這裏有一個接口使用新澤西州的依賴注入在一個獨立的應用
interface Idemo{
public int getDemo(int i);
}
而且它是一個實現
class DemoImpl implements Idemo{
@Override
public int getDemo(int i){
return i+10;
}
}
而且還有這對Idemo
class Sample{
@Inject
Idemo demo;
public int getSample(int i){
return demo.getDemo(i);
}
}
依賴一類
現在說我想測試樣品類
public class SampleTest extends JerseyTest {
@Inject
Sample s;
@Override
protected Application configure() {
AbstractBinder binder = new AbstractBinder() {
@Override
protected void configure() {
bind(Demo.class).to(Idemo.class);
bind(Sample.class).to(Sample.class); //**doesn't work**
}
};
ResourceConfig config = new ResourceConfig(Sample.class);
config.register(binder);
return config;
}
@Test
public void test_getSample() {
assertEquals(15, s.getSample(5)); //null pointer exception
}
}
這裏的Sample實例沒有被創建,s仍然是空的。我想這是因爲當執行到達指定了綁定的那一行時,這個測試類已經被創建了。但是我不確定。 Autowired而不是澤西CDI同樣的作品
Had Sample是一個資源/控制器類,測試框架將創建它的一個實例而不需要注入它,但有可能使用Jersey DI測試任何其他非Web類?