MakefileでJUnitを使用しようとしていますが、動作させることができません。
私のフォルダ構造は次のとおりです(makefileはmyProjectにあります):
myProject
|--bin
|--main
|--org
|--myPackage
|--test
|--org
| |--myPackage
|
|--lib
ここで、/ mainにはメインファイルが含まれ、/ testにはテストファイルが含まれ、/ libにはhamcrest-core-1.3.jar
とjunit-4.12.jar
が含まれます。
私のメイクファイルは次のとおりです。
JAVAC = javac
JVM = Java
JAVADOC = javadoc
MKBIN = mkdir -p bin
JAVAC_FLAGS = -g -d bin/
JAVAC_CP = -cp
SRC = main/
SRCTEST = test/
LIB = lib/*.jar
PACKAGE = org/myPackage/*.Java
TARGET = bin
MAIN = org.myPackage.Main
.SUFFIXES : .class .Java
all:
$(MKBIN) | $(JAVAC) $(JAVAC_FLAGS) $(SRC)$(PACKAGE)
test:
$(MKBIN) | $(JAVAC) $(JAVAC_CP) $(LIB) $(SRCTEST)$(PACKAGE)
clean:
rm -rf $(TARGET)
run:
$(JVM) $(JAVAC_CP) $(TARGET) $(MAIN)
.PHONY: all test clean
make test
を実行すると、次のようになります。
~/myProject | 18:07:29>make test
mkdir -p bin | javac -cp lib/*.jar test/org/myPackage/*.Java
test/org/myPackage/MyClass.Java:3: error: package org.junit does not exist
import static org.junit.Assert.*;
...
Eclipseでは、テストは完全に正常に機能します。私は何が間違っているのですか?
回答を編集
さて、私はもう少し読んで、いくつかの変更を加えました。
私の構造の最初:
_|--bin
|--src
|--main
| |--Java
| |--myPackage
|--test
|--Java
| |--myPackage
|--lib
_
ここ から。
そして私の新しいメイクファイル:
_JAVAC = javac
JVM = Java
JAVADOC = javadoc
MKBIN = mkdir -p bin
JAVAC_FLAGS = -g -d 'bin/'
JAVAC_CP = -cp
MAINSRC = src/main/Java/
TESTSRC = src/test/Java/
LIB = 'src/test/lib/*:src/main/Java'
PKGSRC = myPackage/
TARGET = bin
MAIN = myPackage.Main
MAINTEST = myPackage.MainTest
.SUFFIXES : .class .Java
all:
$(MKBIN)
$(JAVAC) $(JAVAC_FLAGS) $(MAINSRC)$(PKGSRC)*
test:
$(JAVAC) $(JAVAC_FLAGS) $(JAVAC_CP) $(LIB) $(TESTSRC)$(PKGSRC)*
clean:
rm -rf $(TARGET)
run:
$(JVM) $(JAVAC_CP) $(TARGET) $(MAIN)
run_test:
$(JVM) $(JAVAC_CP) $(TARGET) $(MAINTEST)
.PHONY: all test clean run run_test
_
したがって、変更は次のとおりです:
_LIB = 'src/test/lib/*:src/main/Java'
_
ここ から。
_JAVAC_FLAGS = -g -d 'bin/'
_
$(JAVAC_FLAGS)
をtest
に含めるのを忘れたため、適切なフォルダー(bin /ではなくroot /)がターゲットになりませんでした。
助けてくれてありがとう!