从 ant 执行的 junit 测试未加载 DLL

Posted

技术标签:

【中文标题】从 ant 执行的 junit 测试未加载 DLL【英文标题】:DLL not loaded by junit test executed from ant 【发布时间】:2017-09-19 11:55:15 【问题描述】:

我的 junit 测试类使用 dll 连接到数据库。当我从 eclipse 运行测试时,它工作正常,但是当我使用 ant 运行测试时,我得到了这个:

Testsuite:......BatchAlertTest 测试运行:1,失败:1,错误:0, 跳过:0,经过时间:0,064 秒

测试用例:testAddAlert 耗时 0,002 秒失败 com.microsoft.sqlserver.jdbc.SQLServerDriver junit.framework.AssertionFailedError: com.microsoft.sqlserver.jdbc.SQLServerDriver 在 ......BatchAlertTest.createDatabaseConnection(BatchAlertTest.java:44) 在 ......BatchAlertTest.setUp(BatchAlertTest.java:32)

这是我的 build.xml 中的 ant 目标:

<target name="run-persister-junit">
    <mkdir dir="testReports"/>

    <junit printsummary="yes" haltonfailure="yes">

        <classpath>
            <pathelement location="java/lib/JUnit/junit-4.12.jar"/>
            <pathelement location="java/lib/JUnit/hamcrest-core-1.3.jar"/>
            <pathelement location="java/bin"/>

        </classpath>

        <formatter type="plain"/>
        <formatter type="xml"/>

        <batchtest fork="yes" todir="testReports">
            <fileset dir="java/bin">
                <include name="/**/*Test.class"/>
            </fileset>
        </batchtest>

    </junit>

</target>

为了避免包含 dll 的问题,我将它包含在 PATH 环境变量中。我在目标中是否缺少任何东西来完成测试的执行?

提前致谢。

【问题讨论】:

【参考方案1】:

最后的问题是我错过了从中获取 java 操作的 .jar (sqljdbc42.jar)。将它包含在类路径中解决了这个问题。

【讨论】:

以上是关于从 ant 执行的 junit 测试未加载 DLL的主要内容,如果未能解决你的问题,请参考以下文章

如何让 JUnit 测试(从 Ant 脚本驱动)转储导致失败的异常堆栈?

Junit_Ant使用Eclipse自带的Junit和Ant,生成测试报告

junit 测试和非 junit 测试与 ant 目标

搭建持续集成单元测试平台(Jenkins+Ant+Java+Junit+SVN)

带有Ant junitlauncher的JUnit 5:NoClassDefFoundError:org / junit / platform / launcher / core / Launcher

如何将 JUnit Ant 任务配置为仅在失败时生成输出?