从 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,生成测试报告
搭建持续集成单元测试平台(Jenkins+Ant+Java+Junit+SVN)
带有Ant junitlauncher的JUnit 5:NoClassDefFoundError:org / junit / platform / launcher / core / Launcher