2015-01-12 2 views
0

리눅스 시스템에서 개발중인 단위 테스트가있는 Java 프로젝트가 있으므로 모든 테스트를 실행하는 bash 스크립트를 만들었습니다. 나는 실제로 작동하도록 할 수 없다.테스트를 실행하는 Bash 스크립트

#!/bin/bash 
JUNITPATH="/usr/share/java/junit4-4.11.jar" 
TESTCLASSES=$(find kai/modsogner_och_durin/testing/* | grep .class$) 
EXT="class" 
CLASSNAMES=${TESTCLASSES%.$EXT} 
echo "BEFORE: $CLASSNAMES" 
DOTS=$CLASSNAMES | tr '/' '.' 
echo AFTER: $DOTS 
java -cp .:$JUNITPATH org.junit.runner.JUnitCore $DOTS 

echo 문과 DOTS 변수는 디버깅 목적으로 만 사용된다. 내 문제는 DOTS에 할당하려고 할 때 DOTS를 확인하면 비어있는 것입니다.

echo AFTER: $DOTS 

이렇게하면 빈 줄이 인쇄되지만 BEFORE : print는 경로를 완벽하게 인쇄합니다. 내가 배시에별로 좋지 않은 것처럼 보이고, 아주 명백한 것을 놓치고있는 것처럼 보이지만, 실제로 작동시킬 수는 없다. 나는 적어도 내가 의도 한대로는 점 분리 된 패키지와 클래스 이름을 출력

DOTS=$CLASSNAMES | tr '/' '.' 

echo $CLASSNAMES | tr '/' '.' 

로 교체하는 경우 있는지 확인했다. 그래서 문법 오류처럼 보입니다.

+2

Maven과 같이 기존 도구를 사용하여 테스트를 실행하는 것이 좋습니다. –

+0

이것들은 junit 테스트이므로 개미도 사용할 수 있습니다. 그리고 장애가 발생하면 jacoco를 사용하여 적용 범위 보고서를 얻으실 수 있습니다. – jgr208

+0

maven/ant에 대해 들었으며 조사를 고려해 보았습니다. 내가 unittest 전체에 대해 새롭기 때문에, 그러나 내가 다른 소프트웨어가 나를 위해 그것을하도록 내버려두기 전에 내가 실제로 그것을 스스로하는 법을 배우기를 원했기 때문에, 주위를 둘러 보지 못했다. 어쨌든 이것은 아주 기본적인 대학 과정입니다. 그래서 지금 당장 놀 수 있습니다. 팁을 가져 주셔서 감사합니다! – kai

답변

3

FOO=bar baz과 같은 일반 할당은 문자열을 예상하여 변수에 할당합니다. 어떤 명령도 실행하지 않습니다.

당신이 원하는 것은 명령 $(...)을 통해 대체 (또는 구식 `...`)입니다 :

DOTS=${CLASSNAMES//\//.} 
:
DOTS=$(echo $CLASSNAMES | tr '/' '.') 

그러나이 간단한 경우에, 당신은 또한 ${varname//pattern/replacement}와 배쉬의 매개 변수 대체를 사용할 수 있습니다

+0

그건 속임수 였어! 배시 대용 물을 사용했습니다. 키워드 "매개 변수 대체"및 "명령 대체"도 매우 유용했습니다! – kai

관련 문제