저는 현재 다른 개발자가 사용하기 위해 모양을 얻으려고하는 사적인 Java 프로젝트가 있습니다. 내가하려고하는 일 중 하나는 JUnit, PMD 및 FindBugs와 같은 것들에 필요한 JAR을 Ant 자체에서 다운로드하도록하는 것입니다. 따라서 개발자는 직접 설치하지 않아도됩니다. 그래서 모든 것을위한 RPM 패키지를 제거했는데 (Ivy 다운로드 버전을 사용하고 있는지 확인하기 위해) JUnit 관련 JAR 파일을 다운로드하기 위해 Ivy가 제대로 작동하도록했습니다. 그러나 나는 두 가지 (아마도 관련이있는) 문제를 겪고 있습니다.Ivy를 사용하여 Ant에서 사용하기 위해 JUnit을 다운로드하십시오.
작업에 대해 taskdef
을 입력하면 경고 메시지가 나타납니다. Trying to override old definition of datatype junit
.
junit.framework.AssertionFailedError: No tests found
: 나는 junit
taskdef를 오버라이드 (override) 할 때, 나는 JUnit 테스트를 실행하려고이 오류가
failed to create task or type junit
Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.
2) : 나는 그렇게하지 않을 경우, 나는 오류 이 오류에 대한 검색을 수행하면 4.x에서 실행될 때 JUnit 3.x 용으로 작성된 테스트에서 발생합니다. 그러나 내 JUnit 테스트는 모두 4.x @Test
테스트 방법을 사용합니다. JUnit 4.11 JAR 파일을 제공하는 RPM 패키지를 사용할 때 테스트가 제대로 실행되었으며 Ivy에서 다운로드 한 JUnit JAR 파일은 JUnit 용 버전 4.11 및 1.9 용입니다. .4 ant-junit 용. 설치된 RPM 패키지 (1.9.2)와 Ivy (1.9.4)에서 다운로드 한 Ant JAR 파일 간에는 불일치가 있지만 문제는 아닌 것 같습니다. 이 문제를 해결하는 몇 가지 방법이 있습니다,
Finding class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask
Loaded from /BlahBlah/lib/ant-junit.jar org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.class
Class org.apache.tools.ant.Task loaded from parent loader (parentFirst)
Class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask loaded from ant loader (parentFirst)
[...]
Class org.apache.tools.ant.util.FileUtils loaded from parent loader (parentFirst)
Could not load class (org.apache.tools.ant.taskdefs.optional.junit.JUnitTask) for type junit
Could not load class (org.apache.tools.ant.taskdefs.optional.junit.JUnitTask) for type junit
Trying to override old definition of datatype junit
+Datatype junit org.apache.tools.ant.taskdefs.optional.junit.JUnitTask
를 따라서 :
내 junit
taskdef은 다음과 같습니다
<taskdef name="junit"
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
<classpath location="lib/ant-junit.jar"/>
<classpath location="lib/junit.jar"/>
<classpath location="lib/hamcrest-core.jar"/>
</taskdef>
디버깅과 Ant를 실행 켜져 문제로이 출력 relevvant을 생산? 아니면 완전히 다른 접근 방식을 취해야합니까?
나는 그것을 시도했지만 어떤 도움이되지 않습니다. 'pathid'가 제대로 설정되고 있다는 것을 알고 있습니다. 왜냐하면'taskdef' 클래스 패스를 사용할 수 있기 때문입니다. –