1

1)问题描述:

  • 我正在使用 Spring-Data-Mongo-Reactive、Testcontainers 和 JUnit 05;
  • 我有一个带有简单测试和“嵌套测试类”的测试类(也有一个简单的测试);
  • 当 JUnit 测试 NestedClass 时,MongoDb 连接关闭,测试“Test's NestedClass”失败;

我的目标是:

  • 保持 Reactive-MongoDB-Connection 打开,以便测试“Nested-Test-Class”;

以下是上述情况的代码:

1.1) 代码:

当前工作状态:不工作;

当前行为:

  • Reactive-MongoDB 连接正在关闭,当测试“嵌套测试类”时,即使第一个测试正常测试。.

@Import(ServiceCrudRepoCfg.class)
@TestcontainerAnn
@TestsMongoConfigAnn
@TestsGlobalAnn
public class Lab {

  final private String enabledTest = "true";

  @Autowired
  IService serviceCrudRepo;


  @Test
  @DisplayName("Save")
  @EnabledIf(expression = enabledTest, loadContext = true)
  public void save() {
    Person localPerson = personWithIdAndName().create();

    StepVerifier
         .create(serviceCrudRepo.save(localPerson))
         .expectSubscription()
         .expectNext(localPerson)
         .verifyComplete();
  }


  @Nested
  @DisplayName("Nested Class")
  @Execution(SAME_THREAD)
  class NestedClass {

    @Test
    @DisplayName("findAll")
    @EnabledIf(expression = enabledTest, loadContext = true)
    public void findAll() {

      StepVerifier
           .create(serviceCrudRepo.findAll()
                                  .log())
           .expectSubscription()
           .expectNextCount(1L)
           .verifyComplete();
    }
  }
}

2)当前有问题的日志/错误:

java.lang.AssertionError:期望“expectNextCount(1)”失败(期望:count = 1;实际:counted = 0;信号:onError(org.springframework.data.mongodb.ClientSessionException:状态应该是:服务器会话池已打开; 嵌套异常是 java.lang.IllegalStateException: state should be: server session pool is open))

引起:java.lang.IllegalStateException:状态应该是:服务器会话池是打开的

3)问题:

  • 如何保持 Reactive-MongoDB-Connection 处于打开状态,以便同时测试“Nested-Test-Class”?

非常感谢您的帮助

4

0 回答 0