Architecture ESB应用程序和持续集成

Architecture ESB应用程序和持续集成,architecture,continuous-integration,mule,Architecture,Continuous Integration,Mule,我将Junit和CI用于纯基于Java的应用程序,效果非常好。Junit用于通过传递操作/方法的输入值(参数)来单元测试操作/方法的案例,并期望返回值应与标准匹配。通常,我们测试junit是为了一个纯粹的基于java的应用程序,该应用程序具有控制器、服务和DAO层。有时使用模拟对象来模拟/代理第三方应用程序 现在,我已经在Mule上构建了ESB应用程序,它有http连接器、带raml的api工具包、调度器、连接到sfdc的云、ActiveMQ、smtp、连接到多个DB的JDBC、datampap

我将Junit和CI用于纯基于Java的应用程序,效果非常好。Junit用于通过传递操作/方法的输入值(参数)来单元测试操作/方法的案例,并期望返回值应与标准匹配。通常,我们测试junit是为了一个纯粹的基于java的应用程序,该应用程序具有控制器、服务和DAO层。有时使用模拟对象来模拟/代理第三方应用程序

现在,我已经在Mule上构建了ESB应用程序,它有http连接器、带raml的api工具包、调度器、连接到sfdc的云、ActiveMQ、smtp、连接到多个DB的JDBC、datampaper、datewave和continues

最后,Mule应用程序是一个集成了Java/Groovy和其他一些技术的xml文件。Java组件仅占应用程序构建组件的10%(有时甚至没有)

我正在计划与詹金斯的持续整合。为此,我需要运行Junit框架对应用程序进行回归测试。我希望Munit不会与CI一起工作,因为Munit必须与Studio一起执行,并且它是用xml文件编写的

由于构建的应用程序不是完整的基于Java的应用程序(在该应用程序中,我们可以为操作及其返回值编写单元测试断言),因此观察到以下问题:

  • 编写Junit for Mule组件比编写功能要花很多时间,因为代码长度更适合获取Mule xml组件和模拟组件
  • 我不能为Mule ESB应用程序提供100%的代码覆盖率。我可以在基于Java/Junit的应用程序中使用cobertura或其他工具来覆盖代码
  • 开发人员不必在这个单元测试上花费时间,而是可以通过手动测试来利用时间来实现更稳定的应用程序
    此外,ESB应用程序的构建是为了运行不同的流程来集成在一起。对于基于ESB的应用程序,将CI与Junit一起使用是否是好的体系结构建议?或者在没有CI和Junit测试的情况下在服务器上构建、手动测试和部署应用程序?

    Mule ESB完全基于Java/Spring。如果您将项目设置为具有适当依赖性的maven项目,则可以在Studio之外运行munit测试

    它实际上包含在高级培训课程中。
    Mule ESB完全基于Java/Spring。如果您将项目设置为具有适当依赖性的maven项目,则可以在Studio之外运行munit测试

    它实际上包含在高级培训课程中。

    您似乎提出了一些关于为Mule ESB应用程序实现持续集成的问题。我将尽力陈述并回答您的每一个问题。如果我还不明白,请更新问题,我会相应地修改答案

    我的CI过程是仅限于基于junit的测试,还是也可以使用MUnit测试

    如果使用maven自动化构建,则可以在CI过程中包括基于MUnit的测试和基于junit的测试。要运行MUnit测试,请将以下插件添加到POM中:

    <plugin>
      <groupId>com.mulesoft.munit.tools</groupId>
      <artifactId>munit-maven-plugin</artifactId>
      <version>1.0.0</version>
      <executions>
        <execution>
          <id>test</id>
          <phase>test</phase>
          <goals>
            <goal>test</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    
    
    com.mulesoft.munit.tools
    基类。熟练地开发这些测试似乎需要一段时间,并且有在几个不同应用程序上进行测试的经验。一旦你掌握了诀窍,并建立了一套你喜欢的支持java库,我希望这些库所用的时间与“纯java”中的等效库一样长

    单元测试大多是使用测试流或子流以及特定的输入消息编写的。这些似乎与使用junit进行“纯java”的开发所花费的时间差不多。学习过程也相当快:我希望使用TDD的java开发人员能够在几天内对Mule开发有相当的了解

    有没有办法测量我的Mule应用程序测试套件的代码覆盖率

    我还没有看到任何方法来衡量您的CI流程中的覆盖率。但是,Anypoint Studio在开发时是可用的

    考虑到编写自动化测试所需的时间,以及缺乏设计时重用,将时间花在手动测试上而不是创建自动化测试套件和实现CI流程是否更明智


    没有。我已经在许多Mule开发项目和六个团队中实施了与自动化测试的持续集成,但这些团队并没有100%热情地响应。:)您在最初几个项目中花费的额外开发时间很快就被忘记了,而在软件的生命周期中,这些好处仍然存在。

    您似乎提出了一些关于为Mule ESB应用程序实现持续集成的问题。我将尽力陈述并回答您的每一个问题。如果我还不明白,请更新问题,我会相应地修改答案

    我的CI过程是仅限于基于junit的测试,还是也可以使用MUnit测试

    如果使用maven自动化构建,则可以在CI过程中包括基于MUnit的测试和基于junit的测试。要运行MUnit测试,请将以下插件添加到POM中:

    <plugin>
      <groupId>com.mulesoft.munit.tools</groupId>
      <artifactId>munit-maven-plugin</artifactId>
      <version>1.0.0</version>
      <executions>
        <execution>
          <id>test</id>
          <phase>test</phase>
          <goals>
            <goal>test</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    
    
    com.mulesoft.munit.tools
    基类。熟练地开发这些测试似乎需要一段时间,并且有在几个不同应用程序上进行测试的经验。一旦你掌握了诀窍,并建立了一套你喜欢的支持java库,我希望这些库所用的时间与“纯java”中的等效库一样长

    单元测试大多是使用测试流或子流以及特定的输入消息编写的。这些似乎与使用junit进行“纯java”的开发所花费的时间差不多。学习过程也相当快:我希望使用TDD的java开发人员能够在几天内对Mule开发有相当的了解

    有没有办法测量我的Mule应用程序测试套件的代码覆盖率

    我还没有看到任何方法来衡量您的CI流程中的覆盖率。但是,Anypoint Studio在开发时是可用的

    考虑到时间r