2009-12-10 2 views
0

해당 모델을 생성하는 데 필요한 Java 소스 코드를 생성 한 "toJavaCode()"를 빌드하고 싶습니다 (이유를 신경 쓰지 마십시오. 또는 호환성 문제가 발생할 수 있음).다른 테스트 중에 생성 된 Java 코드를 테스트하십시오.

나는 이것을 테스트하는 방법을 놓치고 있습니다. 나는 Maven을 사용하고 있지만 generate-sources는 내 서버가 적절한 일괄 테스트를 수행해야하므로 실제로 작동하지 않습니다. "테스트"목표 중에 서버를 가져 오지만 생성 소스는 너무 일찍 끝납니다.

반면에 JDK의 tools.jar에 내장 된 컴파일러를 사용하여이 작업을 수행 할 수 있지만 테스트를 위해 jar 파일로 압축하는 방법을 알지 못합니다.).

아이디어가 있으십니까?

+0

확실하지 않은 경우 - 해당 클래스를 만드는 데 필요한 코드를 생성하는 클래스에 메서드를 추가 하시겠습니까? –

+0

개체가 아니라 클래스. "정적 문자열 toJavaCode (MyDef myDef)"메서드를 사용하여 클래스 "MyDef"를 가질 수 있습니다. 인스턴스에서 호출 될 때 해당 인스턴스를 다시 만드는 데 필요한 Java 코드를 생성합니다. –

답변

1

당신은 소스 파일 및 설정 classloader에를 컴파일 JavaCompiler API을 사용할 수 있습니다 테스트 (sample code)에서 컴파일 된 클래스를로드하십시오. tools.jar이 클래스 경로에 있어야합니다. JDK가 사용되는 경우입니다.

생성 된 코드가 특정 클래스에 안정적이면 annotation processor을 사용하여 소스 코드를 생성하고 주석 처리 된 클래스와 동일한 javac에서 컴파일 할 수 있습니다.

+0

직접 메모리에 컴파일 하시겠습니까? 생각하지 않았어. –

+0

클래스 경로에 포함될 수있는 임시 디렉토리로 컴파일됩니다. –

+0

샘플 코드에 대한 링크를 추가했습니다. –

0

maven에 개미 작업을 추가 할 수 있습니다. 이것은 메이븐 빌드 중에 '고전 밖의 명령'에 대한 것입니다. mavens 테스트 목표에 javac ant 태스크를 추가하는 것과 같습니다.

는 (죄송합니다, 나는 당신의 commentor의 매트 나처럼 혼란 스러워요 -하지만 내장 개미 작업은 여기 스위스 군용 칼입니다.)

관련 문제