【问题标题】:ActivePivot testing strategyActivePivot 测试策略
【发布时间】:2013-06-21 18:19:35
【问题描述】:

我正在考虑为 ActivePivot 服务器的不同部分以及最重要的后处理器实现自动化测试。

由于我刚开始,我想了解更多关于该领域的最新技术,最佳实践是什么以及是否有任何需要避免的警告。

如果您有任何经验,我将很高兴收到您的来信。

干杯, 帕斯卡

【问题讨论】:

    标签: testing activepivot


    【解决方案1】:

    这是一个非常广泛的问题。 ActivePivot 解决方案是一款 Java 软件,它继承了有关软件项目测试和持续构建的所有最佳实践。

    但这里有一些基本的 ActivePivot 入口点:

    如何、在何处以及何时编写测试? 编写 junit 测试,使用 maven 运行它们,使用 Jenkins 设置持续构建。

    如何在单元测试中嵌入(真实的、非平凡的)ActivePivot 实例? 启动嵌入式 Jetty Web 应用程序服务器。 ActivePivot Sandbox 应用程序就是一个例子(查看 com.quartetfs.pivot.jettyserver.JettyServer)。如果您希望针对同一个 ActivePivot 实例运行一系列单元测试,您可以静态启动 Jetty 服务器(例如在使用 @BeforeClass 注释的静态方法中)。在任何情况下都不要忘记在测试结束时停止它。

    如何编写性能测试? 在 Sandbox 项目中,有一个名为 com.quartetfs.pivot.client.MDXBenchmark 的小型 MDX 基准测试。它很容易丰富,是一个很好的起点。还有 com.quartetfs.pivot.client.WebServiceClient 说明了连接到 ActivePivot

    如何测试后处理器? 从 ActivePivot 版本 4.3.5 开始,没有专门用于隔离后处理器测试的框架。后处理器通过查询(MDX 查询或 GetAggregates 查询)进行测试。当然,如果您的后处理器实现有一些实用方法,可以在标准单元测试中一一进行测试。

    【讨论】:

      【解决方案2】:

      要测试基于 ActivePivot 的项目,更简单的方法是重用您的 Spring 配置。这可以通过 ClassPathXmlApplicationContext 来完成:

      ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
      

      这个简单的测试将检查您的 Spring 是否真的正常。然后,如果要运行查询,可以执行以下操作:

      IQueriesService queriesService = context.getBean(IQueriesService.class);
      queriesService.execute(new MDXQuery(someMDX));
      

      如果你想检查你的加载层,你可以这样做:

      IStoreUniverse storeUniverse = context.getBean(IStoreUniverse.class);
      for (IRelationalStore store : storeUniverse.values) {
          assertEquals(hardcodedValue1, store.getSize())
          assertEquals(hardcodedValue2, store.search("someKey", "someValue").size())
      }
      

      这样,您无需启动 Web 应用容器,该容器可能会失败,因为它需要一些可用的端口(例如,您不能同时运行多个测试)。

      后处理器应该是 Basic 或 DynamicAggregation 后处理器,它们易于测试:关注 .init 和调用点 ILocations 的评估方法。高级后处理器无法进行合理的单元测试。然后,我建议尽可能简单地编写 MDX 查询,但考虑到后处理器是相关的。

      可以使用任何单元测试框架和模拟框架。不过,我建议使用 JUnit 和 Mockito。

      【讨论】:

        【解决方案3】:

        我建议使用 Spring4JUnit 来启动上下文。然后,您可以自动装配 bean 并直接访问查询服务和活动数据透视管理器等内容。

        @RunWith(SpringJUnit4ClassRunner.class)
        @ContextConfiguration(locations = {"classpath:SPRING-INF/ActivePivot.xml", "classpath:cusomTestContext-test.xml"})
        
        ...
        
        @Resource
        private IActivePivotManager manager;
        
        @Resource
        private IQueriesService queriesService;
        
        @Test
        public void testManagerOk() {
            assertNotNull(manager);
            assertTrue(manager.getStatus().equals(State.STARTED));
        }
        
         @Test
        public void testManagerOk() {
           // run a query with the queries service
        }
        ...
        

        您可以在单独的上下文文件中为测试定义自定义测试属性,例如加载一组测试数据。

        【讨论】:

          猜你喜欢
          • 2011-04-20
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-22
          • 2015-07-27
          • 1970-01-01
          相关资源
          最近更新 更多