Spring Boot
1.4提供了一些出色的测试改进。一种是@DataJpaTest
注释,其中仅将JPA测试所需的零件连接起来。仅连接JdbcTemplate
测试所需零件的等效外观会是什么样?
我很好地构建了自己的模拟注解的复合注解@DataJpaTest
。
好问题。具有讽刺意味的是,昨天在SpringOne Platform的测试讨论中提出了这个问题。让我们看看实现这样的专用测试注释需要什么。
TL;DR
检查github上的代码
首先,您需要创建注释。该注释重用了spring-boot-test- autoconfigure
模块中的一些位。您可能想要自动配置内存数据库(就像DataJpaTest
这样)。您还想确保默认情况下配置和禁用了缓存(以防您@EnableCaching
在Spring
Boot应用程序中使用缓存)。您还希望所有测试@Transactional
默认为默认,因此应添加它。
接下来,您希望有效地进行切片。此时,您需要做的是a DataSource
,a JdbcTemplate
数据库迁移(flyway /
liquibase)和要处理的事务管理器@Transactional
。为了避免其他自动配置启动,您应该添加以下内容:
@OverrideAutoConfiguration(enabled = false)
然后,您要显式启用上面的自动配置。为此,您添加,@ImportAutoConfiguration
并在其中添加以下内容META- INF/spring.factories
# AutoConfigureDataJpa auto-configuration imports
com.example.test.autoconfigure.jdbc.DataJdbcTest=\
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
输入的密钥spring.factories
应与注释的FQN相匹配。每当Spring
Boot发现@ImportAutoConfiguration
没有额外的属性时,它将在中查找与注释类型匹配的键spring.factories
。
接下来,您希望能够包含带有过滤器的其他组件(组件扫描)。为此,您可以添加@TypeExcludeFilters(DataJdbcTypeExcludeFilter.class)
where
DataJdbcTypeExcludeFilter
几乎与之相同的东西DataJpaTypeExcludeFilter
(因此我们可能要为此提取一个通用类)。
完成此操作后,只需添加注释,即可为您JdbcTemplate
自动配置注释
@RunWith(SpringRunner.class)
@DataJdbcTest
public class DataJdbcSampleTests {
@Autowired
private JdbcTemplate jdbcTemplate;
...
}
测试你的代码是非常重要的。 习惯于同时写测试用例和运行代码,现在被视为一个好的习惯。如果使用得当,这种方式将帮助你更加明确自己代码的功能,以及拥有更加可解耦的结构。 测试的通用规则: 测试单元应该集中于最小部分功能,并且证明它是正确的。 每个测试单元必须完全独立。他们都能够单独运行,也可以在测试套件中运行,而不用考虑被调用的顺序。 要想实现这个规则,测试单元应该加载最新的数据集,之后再做一些清理。
在一个SpringBoot应用程序中,我想做一些关于存储库层的测试。 当我尝试从运行测试时,我得到一个关于的错误 com.norc.application中得字段defaultConfigService需要类型为“com.norc.service.defaultConfigService”得bean,但找不到该bean. 那么这需要运行吗? 我尝试在中放入的bean,但这是不允许的。 那该怎么管理
我正在编写一组简单的PHP函数,我只使用纯PHP7,没有框架,什么都没有。这些函数稍后将在CMS中的插件中使用,但这不是重点。我想使用Codeception为我的函数编写单元测试(为了熟悉它,我知道Codeception基本上只在这里运行PHPUnit),但我真的不知道如何以合理的方式将Codeception指向我的代码。 我的结构如下:我有,其中包含我想要测试的函数,大致如下: 我使用Compo
我有一个包含两个方法的类,每个方法都有一个try-catch块来查找任何异常。 代码如下: 我提出了一个测试用例,使用Mokito来测试上述场景,但不知道如何进入上述的catch块 我试图提出一个NullPointerException,但catch块仍然没有出现在CodeOverage中(我假设它没有经过测试)。请帮我写一个Junit测试用例来输入异常。我对所有这些话题都很陌生。
我的程序对一些输入显示不正确的结果,对另一些输入显示正确的结果。我不知道我在代码中做错了什么。 在我的代码中,我想将一个字符串输入作为一个标签,如果它的每两个连续数字的和是偶数并且它的字母不是元音,那么它就是有效的。我认为字母“A”,“E”,“I”,“O”,“U”,“Y”是这个问题的元音。 输入格式:第一行包含一个长度为9的字符串。格式为“DDXDDD-DD”,其中D代表一个数字(非零),X为大写
nodejs,我想要运行特定的测试代码块,请问如何运行呢? 因为里面的测试代码很多,我想要选择运行部分代码,请问如何运行呢? 比如我想要运行这个it(xxx)部分代码,应该如何运行呢: