现在,我们已经在 CDPlaye r的构造器中添加了 @Autowired 注解, Spring 将把一个可分配给 CompactDisc 类型的 bean 自动注入进来。为了验证这一点,让我们修改一下 CDPlayerTest,使其能够借助 CDPlayer bean 播放 CD:
package soundsystem;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
@Rule
public final StandardOutputStreamLog log = new StandardOutputStreamLog();
@Autowired
private MediaPlayer player;
@Autowired
private CompactDisc cd;
@Test
public void cdShouldNotBeNull() {
assertNotNull(cd);
}
@Test
public void play() {
player.play();
assertEquals(
"Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles\n",
log.getLog());
}
}
现在,除了注入 CompactDisc,我们还将 CDPlayerbean 注入到测试代码的 player 成员变量之中(它是更为通用的 MediaPlayer 类 型)。在 play() 测试方法中,我们可以调用 CDPlayer 的 play() 方法,并断言它的行为与你的预期一致。