我有一个非常基本的 gradle 项目,并且有一个带有 main() 的测试文件。文件“src/test/javaTestRunner.java”如下:
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
代码编译(“./gradlew classes”和“./gradlew testclasses”工作正常)。但是,我无法执行 TestRunner,无法找到调用上述类的正确方法。我尝试了以下方法:
./gradlew test --tests TestRunner ./gradlew 测试 TestRunner ./gradlew 测试运行器
“build.gradle”包含以下内容:
apply plugin: 'java'
apply plugin: 'application'
repositories {
jcenter()
}
dependencies {
compile 'com.google.guava:guava:21.0'
testCompile 'junit:junit:4.12'
}
// Define the main class for the application
mainClassName = 'MyFirstJavaProgram'
任何建议。
谢谢, 艾哈迈德。
最佳答案
另一种运行 main 方法作为 gradle 测试的方法:
将 main 方法更改为不带参数的非静态方法,并使用 @Test
注释:
public class TestRunner {
@Test
public void runTests() {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) { // consider using assertAll (JUnit5)
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful()); // consider using assertTrue (JUnit5)
}
}
然后 ./gradlew test --tests TestRunner
现在应该可以工作了。
不错的 JUnit 5 教程 Writing Tests with JUnit 5作者:JetBrains 的 Trisha Gee。
关于java - 在测试目录中运行主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50730482/