用于服务层单元测试的另一个数据源

大卫·B

在学习了JUnit并经历了它对程序员和项目的好处之后,我现在想对每个实体的服务层进行单元测试,并测试每种方法是否正常工作。

到目前为止,我已经为所有服务类创建了单元测试,但是问题是数据源的数据不适合测试。因此,我必须创建另一个用于服务层测试的数据库,并配置数据源以用于服务层的单元测试。但是问题是我不知道如何配置另一个数据源,该数据源只能src/test/java在生产时访问,而不能在生产时访问。我还是SpringBoot和SpringData的新手,所以我在这里问如何配置这样的要求。

截至目前,我已经有了此application.properties配置。

spring.datasource.url=<DatabaseURL>
spring.datasource.username=<DatabaseUsername>
spring.datasource.password=<DatabasePassword>
spring.datasource.driver-class-name=<DatabaseDriver>
// another datasource configuration

这是服务类的示例代码。使用哪个application.properities - dataSource配置。

@Service
public class FooService {
    @PersistenceContext
    private EntityManager entityManager;

    public List<Foo> findAllByFooForm(FooForm fooForm) {
        // JPA CriteriaBuilder query accroding to FooForm
        return entityManager.createQuery(query).getResultList();
    }
}

最后,这是用于服务类的单元测试的示例代码。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class FooServiceTest {
    @AutoWired
    private FooService fooService

    @Test
    public void testFindAllByFooForm() {
        // Test statements
    }
}
史蒂夫

有几种方法可以组合使用,以使您对此有良好的控制。

首先,如果您创建src/test/resources/application.properties,则仅在测试期间在类路径上可用。它将覆盖您在中定义的所有属性src/main/resouces/application.properties

如果您使用内存数据库来支持这些测试,则可以import.sql通过使用以下属性来确保加载了不同的文件:

spring.jpa.properties.hibernate.hbm2ddl.import_files=import-test1.sql

该注释采用逗号分隔的导入脚本列表,因此您可以使一个脚本加载基本数据集,并由其他脚本加载其他(也许是特定于测试的)数据。

如果您希望在每个测试中连接到不同的数据库,或导致使用不同的导入脚本,则可以使用概要文件来触发此操作。如果创建属性文件application-test1.properties,则测试本身可以使用注释来加载该文件@ActiveProfiles({"test1"})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于服务层的Spring MVC编写单元测试,该测试返回一个视图

在Swift中将数据源分离到另一个类

powerapps:从另一个数据源填充下拉列表

如何从JasperReports中的另一个数据源(JSON)访问字段的值?

在SSIS的另一个查询中将查询/数据源的结果用作参数

单元测试Angular服务,该服务依赖于另一个使用InjectionToken的服务

在Spring的单个事务中如何使用多个数据源(一个用于读取,另一个用于写入)?

从另一个服务(微服务架构)对Flask单元测试客户端进行身份验证?

[Angular 7+]:如何在另一个服务规范中对服务进行单元测试?

在数据框中定义一个分位数组,在R中另一个数据框中定义数据源

Powerapps表单:可能有一个数据源的默认值,而另一个数据源的项呢?

如何在演示文稿和另一个数据源之间平滑切换?

将数据网格过滤为绑定到另一个数据源的bindingNavigator返回的值

SQL Server左联接到另一个数据源

NUnit:如何对另一个单元测试失败进行单元测试?

为单元格中的每个Lookupedit分配一个数据源

多个数据源到一个表

快速切换到另一个数据源

如何在提示查询中添加另一个数据源?

在Tableau中将维度从一个数据源链接到另一个度量中的Measure

c#从另一个来源获取datagridview的数据源

在进行单元测试时,如何测试调用另一个功能的功能?

Catel:反序列化适用于 1 个单元测试,另一个失败

如何从一个数据源读取对象并使用 spring 数据写入另一个数据源?

如果一个方法调用另一个方法,它是单元测试还是集成测试?

一个组件的多个数据源

如何绘制 pd.Series 并使用来自另一个数据源的每个点的颜色?

Python单元测试如何测试调用另一个方法的方法

如何在 Logic App 中将 JSON 字段从一个数据源分配到另一个数据源