小编Nan*_*noC的帖子

如何使用@Transactional注释测试方法

我如何使用 @Transaction 注释测试方法。我编写了一个方法,如果我在应用程序运行时(手动)测试它,该方法就可以工作。但我对此的测试不起作用。我的目标是编写一个测试,确保发生异常时我的事务方法可以正常工作,因此数据库中不会存储任何内容。也许测试Transaction注解是否存在就足够了,相信spring工作得很好。:/但这对我来说很难看。

所以我的目标不是测试 springs transaction 的功能。我的目标是进行一个测试,确保如果发生异常,数据库中不会存储任何内容。也许有更好的方法来测试它。

我每次在测试运行之前都会删除数据库。公司的 id 每次都是随机长的。

环境

  • 爪哇:11
  • 弹簧引导:2.3.1
  • 蒙戈数据库:4.2.7

应用程序.yml

spring:
 data:
    mongodb:
      uri: mongodb://okAdmin:test@mongo_one:27017,mongo_two:27018,mongo_three:27019/?replicaSet=rs0
      database: "ok"
      auto-index-creation: false
Run Code Online (Sandbox Code Playgroud)

Spring的Mongo配置

@Configuration
public class MongoTransactionConfig extends AbstractMongoClientConfiguration {

    @Value("${spring.data.mongodb.database}")
    private String database;
    @Value("${spring.data.mongodb.uri}")
    private String mongo_uri;

    @Bean
    MongoTransactionManager transactionManager(MongoDatabaseFactory mongoDatabaseFactory) {
        return new MongoTransactionManager(mongoDatabaseFactory);
    }

    @Bean
    public MongoClient mongoClient() {
        return MongoClients.create(mongo_uri);
    }

    @Override
    protected String getDatabaseName() {
        return database;
    }
}
Run Code Online (Sandbox Code Playgroud)

方法

@Slf4j
@Service
public class CompanyService {


    public static final int MIN_NUMBER_OF_BRANCHES = 1; …
Run Code Online (Sandbox Code Playgroud)

java testing mongodb spring-data spring-boot

6
推荐指数
1
解决办法
6934
查看次数

标签 统计

java ×1

mongodb ×1

spring-boot ×1

spring-data ×1

testing ×1