【发布时间】:2015-09-16 12:25:41
【问题描述】:
我有一个运行良好的简单 Springboot 应用程序。 我的问题是我做了一些在我的计算机上运行良好但在 Jenkins 上运行良好的测试。
原因是我有 2 个受防火墙保护的数据源。在我的计算机上进行一点“mvn clean install”是有效的,因为它的 IP 是受信任的,而 Jenkins 的 IP 不是而且不可能。
我的测试不需要数据源(一切都是模拟的),但是当加载应用程序上下文时,由于数据库连接超时(->防火墙)而失败
执行测试时如何跳过数据库部分?我尝试使用个人资料但没有成功...
提前感谢您的回复 ;-)
这是我的应用程序的主要类
MyApp.java
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration(exclude={JpaRepositoriesAutoConfiguration.class,
DataSourceAutoConfiguration.class})
@PropertySources({
@PropertySource(MyApp.CLASSPATH_APPLICATION_PROPERTIES)
})
public class MyApp extends SpringBootServletInitializer {
public static final String CLASSPATH_APPLICATION_PROPERTIES = "classpath:/application-${spring.profiles.active}.properties";
....
}
FirstDataSourceConfig.java(另一个数据源有第二个类)
@Configuration
@Profile("prod")
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "dbFirstEntityManager",
transactionManagerRef = "dbFirstTransactionManager",
basePackages = {"my.package.for.dao"})
public class FirstDataSourceConfig {
// Definition of LocalContainerEntityManagerFactoryBean, DataSource and Transaction manager
}
AbstractTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {MyApp.class})
@ActiveProfiles("dev")
public class AbstractTest {
protected Logger LOGGER = Logger.getLogger(this.getClass());
}
AbstractControllerTest.java
@WebAppConfiguration
public class AbstractControllerTest extends AbstractTest {
protected MockMvc mvc;
@Autowired
protected WebApplicationContext webApplicationContext;
protected void setUp() {
mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
....
}
【问题讨论】:
标签: java testing jenkins spring-boot datasource