我需要通过cli运行一个测试用例。我创建了一个runner类
public class Runner {
public static void main(String ... args) throws ClassNotFoundException {
String[] classAndMethod = args[0].split("#");
Request request = Request.method(Class.forName(classAndMethod[0]),
classAndMethod[1]);
Result result = new JUnitCore().run(request);
System.exit(result.wasSuccessful() ? 0 : 1);
}
}
使用此答案Run single test from a JUnit class using command-line。
我从github下载了一个项目(https://github.com/apache/incubator-dubbo),我想在这个项目上运行单个方法,我从终端将自己定位到包含我创建的Runner类的目录中,并启动了以下命令:
java -cp /path/incubator-dubbo/dubbo-cluster /usr/share/java/junit4-4.12.jar /pathClassRunner/src/com/company/Runner org.apache.dubbo.rpc.cluster.StickyTest#testHeartbeat
但我得到了以下错误:
Error: Could not find or load main class pathClassRunner.src.com.company.Runner
有人能帮我吗?
谢谢
发布于 2020-02-04 02:02:09
该命令要求您在classpath
中包含任何不带空格的路径。空格表示classpath
的参数已结束。如果您的路径中有一个空格,则可以包含双引号:
java -cp path1:path2:path3 classname argument
java -cp "path1:path2:path3" classname argument
如果路径以/
开头,则它是完整路径。如果不是,则与您运行命令的位置相关。classname
必须是类的名称,而不是文件的名称,因此这意味着没有.class
。如果您的class
指定了任何package
,那么classname
也需要包含package
名称,并且路径是指向package
的根,而不是class
本身。
检查您的用户是否具有适当的文件访问权限,然后尝试:
java -cp /path/incubator-dubbo/dubbo-cluster:/usr/share/java/junit4-4.12.jar:/pathClassRunner/src/com/company Runner org.apache.dubbo.rpc.cluster.StickyTest#testHeartbeat
我假设你的Runner
在默认的包中。如果它在com.company包中,您将希望运行以下代码:
java -cp /path/incubator-dubbo/dubbo-cluster:/usr/share/java/junit4-4.12.jar:/pathClassRunner/src com.company.Runner org.apache.dubbo.rpc.cluster.StickyTest#testHeartbeat
另一个假设是您的Runner.class
位于/pathClassRunner/src...
目录中。
https://stackoverflow.com/questions/60042906
复制相似问题