运行 使用 ApplicationContext 进行 JUnit 测试时禁用 Hazelcast 实例

Disable Hazelcast instance while running JUnit test with ApplicationContext

我有这样的 JUnit 5 测试,由于测试速度,我需要在 运行 测试时禁用创建 Hazelcast 实例。有什么方法可以针对某个特定测试禁用 Hazelcast 吗?

@SpringBootTest
@RunWith(SpringRunner.class)
class MemoryTradeCommunicatorTest {
// test cases....
}

您可以使用 @Import 仅加载所需的 bean 并像这样模拟您的 Hazelcast bean:

@RunWith(SpringRunner.class)
@Import(value = {MemoryTradeCommunicator.class})

@MockBean
private CacheManager cacheManager;

class MemoryTradeCommunicatorTest {
// test cases....
}

CacheManager 是您的 Hazelcast 实现。另外,不要忘记将其他需要的 bean 声明为 @Import

可以通过三种主要方法来解决您的问题。我假设您只需要禁用 Hazelcast 并且您正在使用 Spring Boot,尽管您没有明确提及它。

  1. 正如 Dmitrii 提到的,您可以模拟提供 Hazelcast 实例的 bean。请注意,您可能需要将配置拆分为多个片段,以便导入测试所需的 bean。
  2. 您可以使用 Spring 个配置文件。您需要创建一个 test 配置文件并在其中创建一个模拟 Hazelcast 实例。实现在很大程度上取决于您如何创建真正的 Hazelcast 实例(Spring 引导或手动)。
  3. Spring 由于自动配置 类,引导创建 Hazelcast 实例。您可以通过 excluding specific classes 来防止这种行为。在您的情况下,您将使用 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration
  4. 启动测试