我已经创建了一个简单的单元测试,但是IntelliJ错误地将它突出显示为红色。将其标记为错误
没有豆子?
如你所见,它通过了测试?所以它一定是自动连接的?
我已经创建了一个简单的单元测试,但是IntelliJ错误地将它突出显示为红色。将其标记为错误
没有豆子?
如你所见,它通过了测试?所以它一定是自动连接的?
当前回答
在bean配置文件中放置@Component或@configuration似乎可以工作,例如:
@Configuration
public class MyApplicationContext {
@Bean
public DirectoryScanner scanner() {
return new WatchServiceDirectoryScanner("/tmp/myDir");
}
}
@Component
public class MyApplicationContext {
@Bean
public DirectoryScanner scanner() {
return new WatchServiceDirectoryScanner("/tmp/myDir");
}
}
其他回答
在存储库类上添加Spring注释@Repository。
我知道没有这个注释它也能工作。但是如果添加了这个,IntelliJ将不会显示错误。
@Repository
public interface YourRepository ...
...
如果您将Spring Data与扩展Repository类一起使用,则会产生冲突包。那么你必须直接标明包裹。
import org.springframework.data.repository.Repository;
...
@org.springframework.stereotype.Repository
public interface YourRepository extends Repository<YourClass, Long> {
...
}
接下来,您可以自动连接存储库而不会出现错误。
@Autowired
YourRepository yourRepository;
这可能不是一个好的解决方案(我猜您试图注册存储库两次)。但是为我工作,不要出错。
也许在IntelliJ的新版本中可以修复:https://youtrack.jetbrains.com/issue/IDEA-137023
@Autowired(required = false) 能让intellij闭嘴吗
看起来您试图在没有实际激活WebEnvironment的情况下运行测试。
解决方案非常简单,只需添加带有必需配置的@SpringBootTest注释。
这里有一个例子:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) // Run the server for testing.
public class mockTest {
@Autowired
// Should work now
}
我已经将我的Intellij IDEA版本更新到2022.2.3,如下所示:
IntelliJ IDEA 2022.2.3(终极版) 构建# IU-222.4345.14 运行时版本:17.0.4.1+7-b469.62 aarch64
它解决了我的问题。
如果你不想对你的代码做任何改变,只是为了让你的IDE满意。我通过将所有组件添加到Spring facet解决了这个问题。
创建一个名为“服务,处理器和路由器”的组或任何你喜欢的名称; 删除并重新创建“Spring Application Context”,使用之前创建的组作为父组。