【发布时间】:2015-02-06 10:08:09
【问题描述】:
我正在尝试在 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
我的makefile如下:
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 中,测试工作得非常好。我做错了什么?
【问题讨论】:
-
通过查看您的文件夹结构,
lib似乎在test文件夹内,如果是,那么我认为您的$(LIB)位置需要更改 -
为什么要将
mkdir的(不存在的)输出通过管道传递到javac? You should probably quote the'lib/*.jar'` 参数以避免shell 也扩展它。 -
@SajanChandran 谢谢,已修复。我已经编辑了我的 OP。仍然得到同样的错误。
-
@EtanReisner 谢谢,已修复。我已经编辑了我的 OP。仍然得到同样的错误。