Tag: 集成测试

使用maven进行集成测试:在测试之前运行jar并在之后终止

我有一个可运行的jar,我希望在集成测试开始之前(在pre-integration-test )在新进程中运行,并在集成测试完成后(在集成后pre-integration-test )终止它。 我可以使用的一个东西是maven-antrun-plugin或exec-maven-plugin来启动pre-integration-test新进程,但是如何终止呢? 也许对于我想要实现的目标有更好的解决方案? PS:我在Windows和Linux上都构建了我的项目,因此可移植性对我很重要。

多语言集成测试框架

想象一下,您拥有一个由不同组件构成的相当复杂的面向服务的体系结构。 组件使用不同的语言(Java,PHP,Ruby)编写,并以不同的方式相互通信(即UI,REST API,在某些情况下共享一些DB表等)。 我正在尝试为一些端到端测试设计集成测试框架。 我们已经对单个组件进行了单元/集成测试,但是我们希望构建一些能够端到端地完全测试我们部署的系统(在真实环境中)的东西,以确保function(根据个人的预期行为)组件正确提供,并且架构也正确配置。 我面临的第一个问题是我们的大多数UI都是用PHP编写的,并且已经使用Cucumber和顶部的几个插件为它编写了UI集成测试。 我正在编写的测试框架(用Java)应该触发这些function测试,然后检查相关组件的行为是否符合预期。 显然,我可以使用像Selenium这样的Java友好组件重写UI测试,但复制工作没有意义。 另一个解决方案是在Java中使用exec()调用运行现有测试,等待它们返回,可能解析输出并继续执行需要执行的其他操作/检查。 考虑到项目的编写方式,在Java中嵌入现有的PHP代码似乎不是一个可行的解决方案。 所描述的解决方案中没有一个听起来令我信服。 理想情况下,拥有某种多语言(和多技术)集成框架会很好,这种集成框架可以插入用不同语言和不同环境/组件编写的相同测试套件测试中。 有没有人知道朝这个方向发展的工具或框架? 如果没有,对这类问题有什么好处?

Java编写的嵌入式Kerberos服务器,用于测试

是否有人知道任何可嵌入的Kerberos服务器(KDC / KAdmin),它们是用Java编写的,可以在JVM进程中运行(类似于Hadoop minicluster或嵌入式LDAP服务器)? 我的目标是让人们运行需要Kerberos身份validation的集成测试,而无需安装本地kerberos服务器/配置远程服务器并连接到它。

ElasticSearch在内存中进行测试

我想写一些与ElasticSearch的集成。 为了测试,我想运行内存ES。 我在文档中找到了一些信息,但没有示例如何编写这种测试。 Elasticsearch参考[1.6]»测试»Java测试框架»集成测试«unit testing 我也发现了以下文章,但它没有数据。 使用Elastic Search轻松进行JUnit测试 我看一下如何在内存中启动和运行ES并通过REST API访问它。

如何将嵌入式PostgreSQL Server Java组件用作单独的服务?

我正在尝试为在Tomcat(7.x)中运行的RESTful(Services)基于Java的应用程序创建一个全面的集成测试套件,并依赖于Postgresql(9.x)实例。 此外,我希望能够通过使用maven failsafe插件,将该套件作为一个独立的进程运行,如果可能的话,仅使用maven 3.x。 这样,测试可以在3个主要平台(Mac OSX,Linux和Windows)上运行。 根据我所学到的,我认为实现这一目标的关键是做这些步骤(按此顺序): 在maven生命周期的预集成测试阶段以某种方式启动postgresql DB(和架构设置)的“嵌入式”版本,让postgres-db-process在后台运行 启动我的Java容器加载我的服务应用程序:我正在使用Jetty 9.1.5插件 在集成测试阶段从Failsafe插件运行我的(基于JUnit)测试 在maven的集成后测试阶段关闭我的Jetty容器 最后,有一些机制在生命周期的后集成测试阶段关闭先前启动的(后台)postgres-db-process(杀死/清理此过程) 在我当前的实现中成功完成了步骤1 – 3。 在第2步中,它使用了exec-maven-plugin,它调用了一个使用postgresql嵌入式Java组件的Java类。 摘自POM.xml: org.codehaus.mojo exec-maven-plugin 1.2.1 Run Postgres DB start/schema setup pre-integration-test java com.some.package.test.utils.DbSetup setup 这里是使用postgresql-embedded启动postgresql实例的DBSetup类的摘录: try { DownloadConfigBuilder downloadConfigBuilder = new DownloadConfigBuilder(); downloadConfigBuilder.defaultsForCommand(Command.Postgres); downloadConfigBuilder.proxyFactory(new HttpProxyFactory(PROXY_ADDRESS, DEFAULT_PROXY_PORT)); IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder() .defaults(Command.Postgres) .artifactStore(new ArtifactStoreBuilder() .defaults(Command.Postgres) .download(downloadConfigBuilder)).build(); PostgresStarter runtime […]

用于测试分布式系统的集成测试框架?

我有一个分布式系统,其组件分布在多个盒子中。 他们使用tcp或多播互相交谈。 每个组件互相交换消息 – 这些基本上是被序列化的数据结构。 我们有哪些集成测试框架来测试这些系统? 我熟悉ruby所以基于ruby的东西肯定会有所帮助。

spring boot集成测试(业务层)

我正在尝试为spring启动应用程序的业务层设置集成测试。 unit testing工作正常但集成测试不起作用。 这是基本设置: // entities @Entity Table(name=”TOrder”) public class JPAOrder… { } @Entity Table(name=”TCustomer”) public class JPACustomer… { } // Repository interfaces @Repository public interface OrderRepository extends CrudRepository { … } @Repository public interface CustomerRepository extends CrudRepository { … } // Business logic @Service @Transactional public class OrderService … { … @Autowired private CustomerRepository […]

运行相同类但具有不同初始条件的测试套件

在JUnit 4中,我希望编写一个由同一测试用例的多种风格组成的测试套件,每种风格的初始条件都不同。 这是一个例子: import java.io.File; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({MultiInputClientServerIntegrationTest.NormalInput.class, MultiInputClientServerIntegrationTest.SimulationHashIssue.class}) public class MultiInputClientServerIntegrationTest { @RunWith(Suite.class) @SuiteClasses({TestClientServerIntegration.class}) public class NormalInput {} @RunWith(Suite.class) @SuiteClasses({TestClientServerIntegration.class}) public class SimulationHashIssue { public SimulationHashIssue() { TestClientServerIntegration.simulation = new File(“test\\BEECHA01\\sim2.zip”); TestClientServerIntegration.inputFile = “files\\config.in”; } } } 如您所见,两个内部类都具有TestClientServerIntegration.class SuiteClasses,但第二个内部类正在更改一些静态变量值。 我发现这个构造函数永远不会被调用,因此这些静态函数永远不会被更改。 我的最终目标是使用多种类型的输入反复运行此TestClientServerIntegration.class 。 如果我能以这种方式运行测试套件,那将是理想的 – 所以希望它是可能的。 我想尽可能少地攻击JUnit,但是需要完成的工作将会完成。

在嵌入式Tomcat 7中部署WAR

我目前需要创建一个服务器才能运行多个unit testing。 为了简化这个过程,我想在运行unit testing(使用@BeforeClass表示法)之前将Tomcat嵌入到我的代码中并加载一个Tomcat实例(后者又加载我的WAR文件)。 我的问题是如何将WAR文件部署到嵌入式Tomcat中? 您可能会注意到我无法使用tomcat maven插件,因为我希望它能够与自动化测试一起运行。

Spring:单元和集成测试

我正在寻找使用Spring设置单元和集成测试的最佳实践。 我通常使用3种测试: “真正的”unit testing(没有依赖) 测试作为“单元”测试(内存数据库,本地调用,模拟对象,……)或集成测试(持久数据库,远程调用,……)运行 测试仅作为集成测试运行 目前我只有第二类测试,这是棘手的部分。 我设置了一个基础测试类,如: @ContextConfiguration(locations = { “/my_spring_test.xml” }) public abstract class AbstractMyTestCase extends AbstractJUnit4SpringContextTests 而“单位”测试如下: public class FooTest extends AbstractMyTestCase 使用自动assembly的属性。 在不同(集成测试)环境中运行测试的最佳方法是什么? 对测试进行子类化并覆盖ContextConfiguration? @ContextConfiguration(locations = { “/my_spring_integration_test.xml” }) public class FooIntegrationTest extends FooTest 这是否有效(我目前无法在此轻松测试)? 这种方法的问题是“@ContextConfiguration(locations = {”/ my_spring_integration_test.xml“})”重复了很多。 有什么建议么? 此致,弗洛里安