xqt*_*qtr 8 java junit makefile javac
我正在尝试在makefile中使用JUnit,但我无法让它工作.
我的文件夹结构如下(makefile在myProject中):
myProject
|--bin
|--main
|--org
|--myPackage
|--test
|--org
| |--myPackage
|
|--lib
Run Code Online (Sandbox Code Playgroud)
其中/ 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
Run Code Online (Sandbox Code Playgroud)
当我跑步时,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.*;
...
Run Code Online (Sandbox Code Playgroud)
在Eclipse中,测试工作非常好.我究竟做错了什么?
编辑找到答案
好的,所以我阅读了更多内容并进行了一些更改。
首先在我的结构中:
|--bin
|--src
|--main
| |--java
| |--myPackage
|--test
|--java
| |--myPackage
|--lib
Run Code Online (Sandbox Code Playgroud)
从这里。
还有我的新生成文件:
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
Run Code Online (Sandbox Code Playgroud)
所以变化是:
LIB = 'src/test/lib/*:src/main/java'
Run Code Online (Sandbox Code Playgroud)
从这里。
JAVAC_FLAGS = -g -d 'bin/'
Run Code Online (Sandbox Code Playgroud)
我忘记包含$(JAVAC_FLAGS)totest以便它没有针对正确的文件夹(root/ 而不是 bin/)。
谢谢您的帮助!
| 归档时间: |
|
| 查看次数: |
19528 次 |
| 最近记录: |