我已经创建了一个简单的单元测试,但是IntelliJ错误地将它突出显示为红色。将其标记为错误

没有豆子?

如你所见,它通过了测试?所以它一定是自动连接的?


当前回答

我在spring引导应用程序中解决这个问题的方法是打开spring应用程序上下文,并手动为缺失的自动连接bean添加类!

(通过项目结构菜单或弹簧工具窗口访问…编辑“Spring Application Context”)

因此,SpringApplicationContext不仅仅包含我的ExampleApplication spring配置,它还包含了缺失的Bean:

SpringApplicationContext:

ExampleApplication.java MissingBeanClass.java

et voilà:错误信息消失!

其他回答

至于intelliJ 2021.2.3版(终极版),我把“spring bean组件中不正确的注入点自动装配”改为警告,这对我来说很有用

只要你的测试通过了,你是好的,点击alt + enter,将光标移到错误上,在第一项的子菜单中,你会发现禁用检查,选择它

您是否检查过在服务实现之上使用了@Service注释? 这对我很管用。

import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserServices {}

你所需要做的是让这个工作是以下代码:

@ComponentScan
public class PriceWatchTest{

    @Autowired
    private PriceWatchJpaRepository priceWatchJpaRepository;
...
...
}

看起来您试图在没有实际激活WebEnvironment的情况下运行测试。

解决方案非常简单,只需添加带有必需配置的@SpringBootTest注释。

这里有一个例子:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) // Run the server for testing.
public class mockTest {

    @Autowired
    // Should work now
}