2009-07-16 5 views
3

junit과 작동중인 ant build.xml 파일을 통합하는 데 문제가 있습니다. 내 테스트 클래스는 내 소스 클래스와 같은 디렉토리에있다. 개미를 사용하는 법을 배우기 때문에 모든 소스와 테스트 클래스를 컴파일하기 만하면됩니다.개미와 함께 junit 테스트 클래스를 컴파일하는 데 문제가 있습니다.

나는 이클립스를 사용하고 있으며, junit 테스트 클래스는 일식을 통해 실행할 때 잘 동작한다. 어느 클래스 패스가 junit.jar와 ant-junit-1.7.0.jar로 올바르게 설정되었다는 것을 의미합니다 (적어도 eclipse의 관점에서). 그러나 후자 jar가 절대적으로 필요한지는 확실하지 않습니다.

내 폴더 구조는 다음과 같습니다

SRC/코드/MyClass.java SRC/코드/MyClassTest.java

과 개미 파일이 단지 MyClass에와 MyClassTest은, 내가 컴파일, 단 하나 개의 목표를 포함 순간에 어떤 JUnit을 작업을 포함하지,뿐만 아니라 같은 디렉토리에 빌드 파일을 가지고 상관 없어 : 내 폴더에 MyClassTest.java (주석 Junit와)를 추가 할 때까지

<target name="compile" > 
    <javac srcdir="src/" /> 
</target> 

개미가 괜찮 았는데. 출력은 다음과 같습니다.

[javac] C:\....\src\MyClassTest.java:3: package org.junit does not exist 
cannot find symbol 

제 생각에는 Ant가 junit 라이브러리를 찾을 수 없다는 것입니다. 클래스 패스를 지정하지 않았기 때문에 Ant는 소스 파일과 동일한 위치에서 필요한 파일을 찾는다 고 가정하고있었습니다 ... 어떻게 앤트에게 junit jar가 있다는 것을 알릴 수 있습니까?

모든 아이디어는 정말 인정 받고 있습니다. 감사합니다.

+0

의견에서와 같이 절대 경로를 사용할 필요는 없습니다. 상대적 일 수 있지만 ant (또는 프로젝트 요소의 basedir 속성)의 실행 위치에 상대적입니다. 경로를 시작하려면 슬래시를 넣지 마십시오. 그렇지 않으면 루트를보고 절대 경로로 처리합니다. – Yishai

답변

5

항아리가없는 디렉토리로, 이름으로 지정해야합니다. 사용 :

<javac srcdir="src/" classpath="pathtojar/junit.jar"/> 

여기서 "pathtojar"는 junit jar가 들어있는 경로입니다.

+0

마르코와 더피 감사합니다. 이클립스 패키지 탐색기보기에 따라 junit.jar은 루트 프로젝트 이름 바로 아래에서 참조되며, 절대 위치를 통해 항아리를 직접 가리켜 야했다. 나는 classpath = "/ junit.jar"를 의미하지 않는다. work, classpath = "C : \ Users \ Desktop \ Work \ Eclipse \ plugins \ org.junit4_4.3.1 \ junit.jar"이라고 말해야했습니다. 다시 한번 감사드립니다! – denchr

6

예, CLASSPATH를 지정해야합니다.

이클립스를 마지막으로 사용한 이래로 오랜 시간이 걸렸지 만 프로젝트 루트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 CLASSPATH에 JUnit JAR을 추가해야한다고 생각합니다.

Ant는 빌드 할 때 CLASSPATH를 알아야합니다. < 경로 >을 살펴보세요. 여기

내가 그것을 할 방법은 다음과 같습니다

<path id="production.class.path"> 
     <pathelement location="${production.classes}"/> 
     <pathelement location="${production.resources}"/> 
     <fileset dir="${production.lib}"> 
      <include name="**/*.jar"/> 
      <exclude name="**/junit*.jar"/> 
      <exclude name="**/*test*.jar"/> 
     </fileset> 
    </path> 

    <path id="test.class.path"> 
     <path refid="production.class.path"/> 
     <pathelement location="${test.classes}"/> 
     <pathelement location="${test.resources}"/> 
     <fileset dir="${test.lib}"> 
      <include name="**/junit*.jar"/> 
      <include name="**/*test*.jar"/> 
     </fileset> 
    </path> 
1

아파치 웹 사이트 당 fetch.xml을 사용하여 jar 종속성을 확보하기 전까지 실제로 운이 없었습니다. 그럼 나에게 잘 돌아갔다. 이것은 내가 한 일입니다.

  1. 명령 줄에서 ant 홈 디렉토리로갔습니다.
  2. "ant -f fetch.xml -Ddest = system"(Ant의 lib 디렉토리에 jar를 저장)
  3. maven-artifact-ant-2.0.4-dep를 갖고 있기 때문에 실행되지 않습니다.ant/lib 폴더에있는 jar.
  4. 나는이 항아리에 대한 Google 검색을 수행하여 jarfinder.com에서 발견했습니다.
  5. 나는이 파일을 다운로드 한 Ant Lib 폴더에 넣었다. 그런 다음 필요한 모든 파일을 가져오고 설정되었습니다.
  6. 그런 다음 명령 줄에서 나는 다시 내 작업 공간 폴더로 가서 내가 모든 개미 청소, 개미 컴파일 (성공적인 구축) 및 개미 실행 및 근무 않았다
  7. 이 개미 -buildfile build.xml 파일을 build.xml 파일을 재설정 - 성공적인 빌드.

JUnit은 Eclipse로 구축되었지만 ANT는 아파치와 개미 설명서에서 여러 가지 해결책을 시도했지만 이것이 저에게 효과적입니다. (저는 Windows 7입니다) -Erik

관련 문제