2013-06-05 65 views
1

我在我的日食中导入了maven项目。现在我需要开始对其进行更改并使用集成测试(在App服务器外)对其进行测试。目前,集成测试使用openEJB容器在服务器上运行。Maven项目编译和测试代码的过程是什么?

我的基本问题是,使用Maven进行编译,构建和测试的常规过程是什么?

  1. mvn install
  2. 的Maven - >更新项目。
  3. 运行在命令行中我的测试

是它是如何做的?我特别想知道mvn install命令。 我应该在测试之前先做三个步骤?

例如:我只是想打印一些东西,看看输出是什么。为此,我想我需要完成所有这些步骤?

openEJB容器需要类,所以它可以加载它们。

回答

0

是的,mvn isntall是最受欢迎的选择。它编译,打包和测试你的项目。

1

如果是Eclipse项目,最合理的做法是不要使用命令行,而是使用Eclipse。假设您安装了m2e插件,请转至your_project->run as->Maven test并运行它。

你不需要既不install也不package阶段运行了测试,package将创建不需要做检查罐子,install会复制这个jar到本地回购这也是无用的。当Maven运行测试时,它使用来自目标目录的编译类,如果它存在,它将忽略项目的jar。

+0

好吧。它必须建立整个项目。项目中不包含集成测试。它的设置分开。基本上,项目需要更新更新的编译库(类)。我应该仍然跳过mvn安装? –

+0

如果集成测试是一个单独的项目,那么如果你从maven运行测试,那么它将使用本地回购的主项目jar。如果你从Eclipse运行它,它将使用目标/类。为了避免混淆,最好从Eclipse运行测试 –

+0

集成测试只是一个文件,它没有任何pom。它的TestNG测试文件。它只需要它使用的类/包。我的问题是,如何获取更新的类到这个文件。所以要生成我需要运行mvn install/package或者只是编译? mvn编译,编译并创建新的类。但是我的测试程序如何识别更新类文件是否不在构建路径中? –

2

首先一个美妙的Maven的快速参考手册,你应该知道,单元测试和集成测试是分开的,是由各自的插件,并在行家生命周期的不同部分运行。单元测试使用surefire运行,集成测试使用failsafe运行。

您想运行集成测试和故障保护文件说:

注:运行集成测试时,你应该调用行家与(短至太有型)

mvn verify

而不是试图直接调用integration-test阶段...

Th是直接在maven中运行集成测试的最佳方式。它将运行必要的所有前面的步骤(例如:compile)以运行集成测试。它不会浪费时间做安装,因为install之后立即发生verify

但是,如果您在本地运行测试,那么直接在IDE中运行集成测试可能是一个更好的主意。这会给你一个更快的反馈循环。

+0

简单的问题:如果我在没有安装/包的情况下进行mvn编译,新的类文件是否包含在项目中,并可用于我的集成测试文件。集成测试是一个文件,我从命令行运行它。 –

+1

简单的答案是,“不”。 AFAIK,集成测试使用'package'的结果。复杂的答案是,你不能在没有本质上运行package的情况下运行'verify'。 'package'也会运行。我想可以直接运行'failsafe:integration-test'和'failsafe:verify'来跳过前面的所有步骤。 –

相关问题