簡體   English   中英

如果類在軟件包中,如何從命令行運行JUnit測試?

[英]How to run JUnit tests from the command line if classes are in packages?

ParserTest類位於包myproject.tests並存儲在以下目錄結構中:

.
└── myproject
    └── tests
        └── ParserTest.class

設置當前shell會話的CLASSPATH(沒有-cp選項,以保持java調用的干凈):

export CLASSPATH=.:/usr/local/lib/java/junit-4.12.jar:/usr/local/lib/java/hamcrest-core-1.3.jar

調用JUnit運行程序並通過測試類作為參數:

java org.junit.runner.JUnitCore myproject/tests/ParserTest

拋出此錯誤:

...
1) initializationError(org.junit.runner.JUnitCommandLineParseResult)
java.lang.IllegalArgumentException: Could not find class [myproject/tests/ParserTest]
...

org.junit.runner.JUnitCore要求使用參數. 作為目錄和類之間的分隔符,而不是/

調用跟蹤看起來像這樣,並以java.lang.Class.forName(classname)結尾:

JUnitCore.main(args)
└── JUnitCore.runMain(args)
    └── JUnitCommandLineParseResult.parse(args)
        └── new JUnitCommandLineParseResult().parseArgs(args);
            └── JUnitCommandLineParseResult.parseParameters(...);
                └── ...
                    └── org.junit.internal.Classes.getClass(arg);
                        └── java.lang.Class.forName(className);

用於java.lang.Class.forName(String className)的JavaDoc說:

參數:className-所需類的全限定名

在Java中,完全限定名稱是用編寫的. 不是/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM