海门网站开发,百度帐号登录,做论坛网站怎么赚钱吗,网站调用数据库在继续本文的主要内容之前#xff0c;让我们先进行一些定义。 单元测试 单元测试是小型的#xff08;测试一种用例或单元#xff09;#xff0c;在内存中运行#xff08;不与数据库#xff0c;消息队列等交互#xff09;#xff0c;可重复且快速的测试。 对于我们的对… 在继续本文的主要内容之前让我们先进行一些定义。 单元测试 单元测试是小型的测试一种用例或单元在内存中运行不与数据库消息队列等交互可重复且快速的测试。 对于我们的对话让我们将其限制为开发人员编写的基于JUnit的测试用例以检查其各自的代码。 整合测试 集成测试更大测试一个流程或组件集成不一定只在内存中运行与数据库文件系统消息队列等交互肯定较慢并且不一定可重复因为结果可能会更改以防万一例如在数据库中做了一些更改。 为什么这种差异化很重要 在敏捷编程中其基本概念是每隔一段时间一天在开发人员盒中多次运行单元测试并强制集成测试每天运行一次在连续集成服务器上而不是在开发人员盒上。 。 请注意开发人员应该能够在需要时运行集成测试这仅仅是因为它与单元测试是分开的因此开发人员现在可以选择不在每次运行测试时都运行集成测试。 这种灵活性究竟有何帮助 开发人员的构建频率更高。 在敏捷世界中这意味着开发人员会更频繁地运行单元测试每天通常运行几次。 开发人员可以更快地了解错误并减少浪费的时间来编码损坏的代码库。 这意味着节省时间和金钱。 修复错误更容易更快。 考虑到构建的频率可以提交较少数量的“违规代码”因此更容易将错误归零并进行修复。 最后但并非最不重要的一点是任何进行过任何专业编码的人都将证明虽然偶尔可以休息10分钟这比等待1小时才能更有效地杀死编码人员的创造力。 。 对士气的影响是无形的但却是巨大的。 我到底该如何减少构建时间 没有一个适合所有人的尺码从来没有。 缩短构建和发布时间的确切可执行步骤将是许多变量的因素其中包括产品的技术堆栈JavaDotNetphp构建和发布技术批处理文件AntMaven以及许多其他因素。 对于JavaMaven和JUnit组合…… 让我们首先使用Maven创建一个简单的Java应用程序来演示这种情况。 \ MavenCommands.bat ECHO OFF REM
REM Set the env. variables.
REM
SET PATH%PATH%;C:\ProgramFiles\apache-maven-3.0.3\bin;
SET JAVA_HOMEC:\ProgramFiles\Java\jdk1.7.0REM
REM Create a simple java application.
REM
call mvn archetype:create ^-DarchetypeGroupIdorg.apache.maven.archetypes ^-DgroupIdorg.academy ^-DartifactIdapp001
pause 如果运行此批处理文件则将从为您准备好的标准Java应用程序开始。 默认的Java应用程序不附带最新的JUnit。 您可能想要更改Maven配置以添加最新的JUnit。 \ pom.xml [...]4.10[...]junitjunit${junit.version}test 现在继续添加一个JUnit测试类。 /app001/src/test/java/org/academy/AppTest.java public class AppTest {private final static Logger logger LoggerFactory.getLogger(AppTest.class);Test
public void smallAndFastUnitTest() {logger.debug(Quick unit test. It is not expected to interact with DB etc.);assertTrue(true);
}Test
Category(IntegrationTest.class)
public void longAndSlowIntegrationTest() {logger.debug(Time consuming integration test. It is expected to interact with DB etc.);assertTrue(true);
}
} 您可能会注意到有一个IntegrationTest.class标记。 您还必须创建此类。 /app001/src/test/java/org/academy/annotation/type/IntegrationTest.java public interface IntegrationTest {// Just a marker interface.
} 创建标记接口并注释测试方法或类如果选择的话是代码中要做的全部工作。 现在剩下要做的就是告诉Maven仅在集成测试阶段运行“集成测试”。 这意味着开发人员在大多数情况下可以选择仅运行单元测试与数据库队列等隔离的快速测试。 持续集成服务器即Hudson或类似产品将运行单元测试和集成测试由于预期将与数据库等交互因此运行速度会较慢并且可能在一夜之间发生。 因此这是您的操作方式。 /pom.xml org.apache.maven.pluginsmaven-surefire-plugin2.12org.apache.maven.surefiresurefire-junit472.12-XX:-UseSplitVerifierorg.academy.annotation.type.IntegrationTest 这意味着开发人员只需使用一根衬管即可运行所有单元测试。 mvn clean test 这将不会运行任何注释为集成测试的测试。 对于集成测试请添加以下内容。 /pom.xml maven-failsafe-plugin2.12org.apache.maven.surefiresurefire-junit472.12org.academy.annotation.type.IntegrationTestintegration-test**/*.class 这意味着Hudson或开发人员如果他选择的话可以通过一个命令运行所有测试单元和集成。 mvn clean verify 当然如果您选择全部进行编译运行单元测试打包运行集成测试和部署那么也可以使用单行命令来完成。 mvn clean deploy 而已。 您已朝着更快的构建和更敏捷的工作方式迈出了一步。 快乐的编码。 进一步阅读 也可以通过Javalobby的此链接获得本文的一个版本-稍作编辑。 这是另一篇文章 涉及使用相同技术的类似主题。 参考对 测试进行分类以减少构建时间。 从我们的JCG合作伙伴 Partho在Tech for Enterprise博客上获得。 翻译自: https://www.javacodegeeks.com/2012/07/categorize-tests-to-reduce-build-time.html