在docker容器内运行maven集成测试

2023-12-07

在运行集成测试之前,我使用 dockerfile-maven 插件将我的 jar 文件移动到 docker 容器内。但是 mvn verify 命令构建图像并运行集成测试,结果测试失败。有人可以帮我在运行集成测试之前运行 docker 镜像吗?这样我就可以从集成测试文件 ping 到 docker 容器内运行的服务。

下面是我的集成测试文件。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.io.IOException;
import java.io.File;
import java.util.Scanner;
import static org.hamcrest.MatcherAssert.*;
import static org.junit.matchers.JUnitMatchers.*;
import org.junit.Assert.*;
import com.facebook.presto.jdbc.PrestoDriver;
import io.airlift.log.Logger;
import org.testng.annotations.Test;

class IntegrationTestIT {

@Test
public void checkForQueryInFile() {

    System.out.println("This test method should be run");
    String url = "jdbc:presto://localhost:8889/jmx/default";

    Statement stmt = null;
    try {
        Connection connection = DriverManager.getConnection(url, "jumbo", null);

        stmt = connection.createStatement();
        String file_path = "";
        String sql_string = "show schemas";

        ResultSet rs = stmt.executeQuery(sql_string);
        File folder = new File("//jars");
        // Move this to constant class
        File[] files = folder.listFiles(); 

        for (File file:files) {
            if (file.isFile()) {
                file_path = file.getAbsolutePath();
            }
        }
        File log_file = new File(file_path);
        final String scanner = new Scanner(log_file).useDelimiter("\\Z").next();;

        assertThat(scanner, containsString(sql_string));

    rs.close();
    stmt.close();
    connection.close();

    } catch (IOException exception) {
        exception.printStackTrace();
    } catch(SQLException sqlException) {
        sqlException.printStackTrace();
    }
}
}

测试报告:

[INFO] Successfully built rohitbarnwal7/presto_log_updated:0.0.1
[INFO] maven-failsafe-plugin:2.5:integration-test (default) @plugin
[INFO] Failsafe report directory: /Users/rohit/workspace/presto plugins/target/failsafe-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.833 sec <<< FAILURE!

Results :

Failed tests:
  checkForQueryInFile(IntegrationTestIT)

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

来自 TestSuite.txt 的集成测试结果

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.559 sec <<< FAILURE!
checkForQueryInFile(IntegrationTestIT)  Time elapsed: 0.015 sec  <<< FAILURE!
java.lang.IllegalAccessException: Class org.testng.internal.MethodInvocationHelper can not access a member of class IntegrationTestIT with modifiers "public"
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:774)
    at org.testng.TestRunner.run(TestRunner.java:624)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
    at org.testng.SuiteRunner.run(SuiteRunner.java:261)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1191)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
    at org.testng.TestNG.run(TestNG.java:1024)
    at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:62)
    at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:141)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)

辅助功能错误消息:

java.lang.IllegalAccessException:类 org.testng.internal.MethodInitationHelper 无法使用修饰符“public”访问类 IntegrationTestIT 的成员

您必须公开您的课程才能运行测试:

public class IntegrationTestIT {
...

排序问题:

如果您的集成测试正在运行integration-test阶段,您可以在期间强制执行docker插件pre-integration-test phase :

<execution>
    ...
    <phase>pre-integration-test</phase>
</execution>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在docker容器内运行maven集成测试 的相关文章

随机推荐

  • 奇怪的 SQL 浪费我的资源

    我在 11 2 0 3 数据库上遇到问题 一个奇怪的查询占整个数据库活动的 47 42 该应用程序是使用 Flex 开发的 前端是 Apache Tomcat 6 0 35 Java 版本为 1 6 0 27 我在几个网站上搜索过 发现其他
  • Powershell 网页抓取 SSL/TLS 问题

    我想在服务器上运行网页抓取脚本 当前脚本收集指定页面上的 html url http websms net httpWebRequest request net webRequest create url net httpWebRespon
  • UITableview ,动态部分和行

    想要动态创建一个 uitableview 其中一个部分有 2 行 我编写了这段代码 但我遇到了所有部分中仅重复前 2 行的问题 现在我有这行 0 1 gt 第 0 节 第 0 1 行 gt 第 1 节 第 0 1 行 gt 第 2 节 想要
  • Magento 购物车/magento 外部的会话数据

    这可能会有点令人困惑 因为我已经尝试了一切来使这项工作成功 我想要的只是我的品牌网站 domain com 中的一个链接 该链接显示我的 magento 1 5 1 购物车 domain com shop 中的数量我很容易提取产品数据和导航
  • Velocity 模板 - 正则表达式

    我刚刚开始在新工作中使用速度 但我真的不喜欢我已经发现的东西 在这一点上 我实际上更喜欢 freemarker X 不管怎样 我正在尝试做一个正则表达式 我看到了这点 搜索 正则表达式 但这并不完全是我正在做的实现 我没有任何对java的访
  • 我想在 ping 主机后获取 ping 执行时间和结果字符串

    我想在 ping 主机后获取 ping 执行时间和结果字符串 我该怎么做 long currentTime System currentTimeMillis boolean isPinged InetAddress getByName se
  • Defer 块未执行

    我在操场上执行以下快速代码 func A print Hello guard 1 2 else return defer print World A 我期待看到 Hello World 相反 只有Hello被打印 为什么是这样 我缺少什么
  • Matlab中两点之间的距离

    我有 2 个向量 一个的尺寸为 200 2 另一个的尺寸为 3 2 它们都是笛卡尔坐标系中的点 我想计算前 200 个点和其他 3 个点之间的距离并将它们存储在向量中 我正在使用这样的函数 for i 1 cur for j 1 200 L
  • 带有 SpriteKit 的 iOS 通用设备应用程序,如何缩放所有视图的节点?

    我想做一个景观 app to be 普遍的 以便精灵节点根据运行应用程序的任何视图大小按比例缩放 我想要一个完全程序化解决方案 因为我不喜欢IB 我的游戏非常简单 我不需要任何类型的滚动或缩放 因此整个游戏将始终存在并占据整个视图 我正在寻
  • java将数组刷新到jList中

    好的 我有一个 JList 内容是通过数组提供的 我知道如何向数组添加元素 但我想知道如何刷新 JList 或者甚至可能吗 我试过谷歌 import java applet Applet import java awt import jav
  • 如何满足迭代器特征界限才能在这里使用 Rayon?

    我正在尝试使用 Rayon 的并行化 Ramer Douglas Peucker 线简化算法par iter代替iter extern crate num traits use num traits Float ToPrimitive ex
  • 属性访问器[重复]

    这个问题在这里已经有答案了 之间有什么根本区别吗 public string Name get return name set name value and public string Name get set 您可以访问内部字段 在第二种
  • 使用循环创建菱形图案

    我正在尝试编写一个程序 该程序读取整数并使用星号显示给定边长的实心菱形 例如 如果边长是4 程序应该显示 这就是我正在尝试做的事情 它正在执行 但我似乎无法为程序提供正确的空间来正确显示菱形形状 userInput int input Pl
  • 如果 json 字段具有特殊字符(如点),则访问 json 字段值

    如果我有一个 json 文件 其中的字段具有特殊字符 在我的例子中是点 我如何访问空手道中的字段值 例如有一个名为 example json 的 json 文件 field1 field2 value2 field 3 value3 如果我
  • 根 ViewController 内的 UIViewController 不旋转

    我有一个 UIViewController 我想将其作为独立层添加到整个应用程序的顶部 所以我尝试在应用程序委托中使用 self window addSubview viewController view 将其添加到 UIWindow 中
  • 将 9 位值作为字节写入 C 中的文件

    我有一个整数值从 0 511 最多 9 位 的数组 我正在尝试将其写入文件fwrite 例如 对于数组 257 258 259 Which is 100000001 100000010 100000011 I am trying to wr
  • 设置配置文件的过期时间

    是否可以设置配置文件的到期日期 我正在公司内部进行试用 我想设定expiration审判结束的日期 而不是仅仅一年之后creation日期 是否有可能 或者总是需要一年的时间creation date 另外 如果无法设置expiration
  • 无法从 json 对象访问数据

    我已将 json 数据结构存储在具有单列的数据框中 名为json 数据在R中 所以我的 json 文本以这种格式存储 row 1 results formatted address Sahibzada Ajit Singh Nagar Pu
  • 使用 Dumper 不会触发故障

    当运行这样的代码时 use strict print Dumper something 编译和运行时没有打印任何内容 也没有发生错误 为什么会出现这种情况 为什么不strict阻止此代码运行 尽管 Dumper 未知 但为什么运行时没有错误
  • 在docker容器内运行maven集成测试

    在运行集成测试之前 我使用 dockerfile maven 插件将我的 jar 文件移动到 docker 容器内 但是 mvn verify 命令构建图像并运行集成测试 结果测试失败 有人可以帮我在运行集成测试之前运行 docker 镜像