小编Do *_*ill的帖子

NoSuchMethodError: 'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()

在 Spring Tool Suite (4.20.0) 中运行 JUnit 测试时出现此错误。

测试运行正常,但最后抛出此错误 -

java.lang.NoSuchMethodError: 'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()'
at org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener.getTestClassNames(StackTracePruningEngineExecutionListener.java:50)
at org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener.executionFinished(StackTracePruningEngineExecutionListener.java:39)
at org.junit.platform.launcher.core.DelegatingEngineExecutionListener.executionFinished(DelegatingEngineExecutionListener.java:46)
at org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.reportEngineFailure(OutcomeDelayingEngineExecutionListener.java:83)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:203)
Run Code Online (Sandbox Code Playgroud)

这是我的 Gradle 插件部分 -

plugins {
    id 'java'
    id 'eclipse'
    id 'eclipse-wtp'
    id 'org.springframework.boot' version "3.1.4"
    id 'io.spring.dependency-management' version "1.1.3"
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Gradle 依赖项部分 -

implementation("org.springframework.boot:spring-boot-starter-parent:3.1.4")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.springframework.boot:spring-boot-starter-test")
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我的测试课非常基础 -

@ExtendWith(SpringExtension.class)
@ContextConfiguration(initializers = ConfigDataApplicationContextInitializer.class, classes = { TransformService.class})
@Slf4j
public class TransformServiceTest {

    @Autowired
    TransformService transformService;

    @Test
    public void transformXmlTest() throws Exception {
        transformService.transformXml();
    } …
Run Code Online (Sandbox Code Playgroud)

junit spring-tool-suite spring-boot spring-tools-4

9
推荐指数
2
解决办法
9392
查看次数

Spring @Transactional具有跨多个数据源的事务

作为一个事务的一部分,我必须更新两个数据源。那是 -

  1. 我在DB1中进行了更新。
  2. 然后,我在DB2中进行另一个更新。

如果DB2中的更新失败,我想回滚DB1和DB2来回滚。可以使用@Transactional完成此操作吗?

这是一个示例代码-

@Transactional(value="db01TransactionManager")
public void updateDb01() {
    Entity01 entity01 = repository01.findOne(1234);
    entity01.setName("Name");
    repository01.save(entity01);

    //Calling method to update DB02
    updateDb02();
}

@Transactional(value="db02TransactionManager")
public void updateDb02() {
    Entity02 entity02 = repository02.findOne(1234);
    entity02.setName("Name");
    repository02.save(entity02);

    //Added this to force a roll back for testing
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,updateDb02中的setRollbackOnly()仅回滚Db01事务。

spring hibernate transactions transactionmanager spring-data-jpa

5
推荐指数
2
解决办法
1万
查看次数