ApplicationContext在使用SpringRunner.class运行的SpringBootTest中返回n



我在运行测试类时遇到问题。它返回";CCD_ 1";这个异常在我运行它之后。

这是我的测试课;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Sfta.class)
public class SftaTests {
@Autowired
ApplicationContext ac;
@Test
public void contextLoads() {
Sfts sfts= ac.getBean(Sfts.class);
assertTrue(Sfts instanceof SftsImpl);
}
}

我的其他课程是这样的;

public interface Sfts {
public void process();
}
@Service
@Component
public class SftsImpl implements Sfts {
@Autowired
private GlobalConfig globalConfig;
@Autowired
private Ftr ftr;
private Fc fc;
@Async
@Scheduled(initialDelayString = "${s.f.t.m}", fixedRateString = "${s.f.t.m}")
public void process() {
int hod = DateTime.now().getHourOfDay();
if (hod != 6){
fc = new Fc(globalConfig, ftr);
fc.control();
}
}
}

为什么在运行测试应用程序后出现错误?

尝试从SftsImpl bean中删除@Component注释。@服务足以注册一个bean。

此外,如果你只是想测试你的bean,那么从ApplicationContext获取它可能不是最好的选择。不使用ApplicationContext的单元测试的代码示例:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Sfta.class)
public class SftaTests {
@Autowired
Sfts sfts;
@Test
public void testAsync() {
sfts.process();
// do assertions here
}
}

相关内容

  • 没有找到相关文章

最新更新