当前位置: 首页 > 知识库问答 >
问题:

编写功能测试时覆盖google guice中endpoint的最简单方法

罗奇文
2023-03-14

我有一个安装DynamoDB模块的应用程序模块

install(new DynamoDBModule());

在DynamoDb模块中,我们有一些代码来构建DynamoDb客户机并初始化映射器

 AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://prod-endpoint:8000", "us-west-2"))
        .build();

现在,当我编写测试时,我必须用本地endpoint替换dynamoDBendpoint,我想知道最简单的方法是什么。我知道这个stackoverflow问题,但这意味着只需一个小改动就可以编写大量代码。我必须创建一个模拟dynamodb模块,一个模拟应用程序模块,然后我可以在测试中运行类似的东西

Guice.createInjector(Modules.override(new AppModule()).with(new TestAppModule()));

是否有一种简单的方法可以在运行测试时以某种方式使用或覆盖测试endpoint,否则继续使用prodendpoint。

共有1个答案

刘阳荣
2023-03-14

EndpointConfiguration配置为绑定,并在TestAppModule中覆盖它。例如。:

class DynamoDBModule {
   @Provides
   @Singleton
   AmazonDynamoDB provideAmazonDynamoDB(EndpointConfiguration endpointConfiguration) {
       return AmazonDynamoDBClientBuilder.standard()
          .withEndpointConfiguration(endpointConfiguration)
          .build()
   }

   @Provides
   @Singleton
   EndpointConfiguration provideEndpointConfiguration() {
       return new AwsClientBuilder.EndpointConfiguration("http://prod-endpoint:8000", "us-west-2");
   }
}

class TestAppModule {

   @Provides
   @Singleton
   EndpointConfiguration provideTestEndpointConfiguration() {
       return new AwsClientBuilder.EndpointConfiguration("test-value", "us-west-2");
   }
}

然后使用你的方法Modules.override,它应该工作:

Guice.createInjector(Modules.override(new AppModule()).with(new TestAppModule()));
 类似资料:
  • 问题内容: 在我正在从事的项目中,我们有通过Selenium编写的功能测试。该应用程序随每个功能发行版进行功能更改。 有没有一种工具/机制可以跟踪自动化功能测试中的差距,以便至少手动测试人员可以关注这些领域? 注意:我们并未执行FTDD,因此即使我们确保较高的单元测试覆盖率,功能测试覆盖率也可能会很差。我们使用NCover检查单元测试范围。 问题答案: 据我所知,至少有两个(商业但便宜)的工具可让

  • 我可以在声纳获得单位测试覆盖率通过使用Jacoco工具的代码覆盖率,并使用其报告在声纳属性文件为'sonar.jacoco.report路径=.../Reports/report.exec'。如何通过使用RAD的默认插件获得SONAR中的单元测试覆盖率,该插件以. coveragedata、. Analysis和. html格式生成报告?

  • 我正试图在詹金斯的sonarqube仪表板上获取代码覆盖率报告。代码覆盖率报告即将发布,但仅显示4.6%的覆盖率。经过调查,我发现使用PowerMock编写的测试类被跳过了。 经过进一步调查,我发现“JaCoCo不能很好地处理动态修改/创建的类(这就是powermock的工作方式)。这是一个已知的限制,我们目前对此无能为力”。 是否有任何解决办法,以便我也可以为使用PowerMock编写的测试类获

  • 假设在下面的Maven项目结构中有和。 在IntelliJ IDEA中,有一个名为包和类的选项,可以将用于缩小代码覆盖率范围的数据包含在覆盖率中。 我想知道,例如,如果我想查看的覆盖率,我应该向本节添加哪些包?我认为,当我编写这个单元测试仅用于测试时,可以只将或其包添加到要包括在覆盖率数据部分的包和类中。那是真的吗?或者什么是正确的方法?

  • 是否有人能够从Maven Build获得JaCoCo中JMockit和Powermock单元测试的复盖范围? 我有一个Powermock单元测试的现有测试集,我希望逐步将其迁移到JMockit。但是我需要能够在一个报告中看到所有单元测试的测试覆盖范围,最好是在Sonar中。 通过将JaCoCo置于“脱机”模式,我确实使JMockit和Powermock测试与Surefire/JaCoCo一起运行(

  • 11.3. 测试覆盖率 就其性质而言,测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过:“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下,测试可以增强我们的信心:代码在很多重要场景下是可以正常工作的。 对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量的——但是有启发式方法