java - 无法编写简单的 JUnit 测试启动器
问题描述
我的主要问题是这个类:
import java.util.Arrays;
import java.util.List;
public class TestRunner{
public void runTests(List<String> testClassNames) throws Exception {
for(String test: testClassNames){
Class<?> aClass = Class.forName(test);
System.out.println(Arrays.toString(aClass.getMethods()));
}
}
public String getResult() {
return null;
}
}
如果应用程序有一个文本形式的测试类名称(例如,“mypackage.MyTests”),那么它应该加载调用类并运行所有标有注解的方法@MyTest
。应用程序还应跟踪哪些测试成功,哪些不成功。成功的唯一标准是测试没有抛出异常。
我不确定我应该如何获得所需的结果,例如和"test1() - OK"
方法 。"test2() - FAILED"
getResult()
到目前为止,我可以获得ExampleTests1
方法列表[public void reflection.tester.ExampleTests1.test1(), public void reflection.tester.ExampleTests1.test2()]
。我应该创建一个新列表或包含的东西,aClass.getMethods()
然后getResult()
我会做一个 for 循环并获得所需的结果吗?
此 TestRunner 类通过所需的类和方法:
MyTest 接口:
public @interface MyTest {
Class<? extends Throwable> expected() default None.class;
class None extends Throwable {}
}
ExampleTests1 类:
public class ExampleTests1 {
@MyTest
public void test1() {
}
@MyTest
public void test2() {
throw new RuntimeException();
}
}
和 TestRunner 类的测试:
@Test
public void runsTestsFromDecoupledFiles() throws Exception {
List<String> testClassNames = List.of(
"reflection.tester.ExampleTests1");
TestRunner testRunner = new TestRunner();
testRunner.runTests(testClassNames);
String result = testRunner.getResult();
assertThat(result, containsString("test1() - OK"));
assertThat(result, containsString("test2() - FAILED"));
}
解决方案
推荐阅读
- reactjs - 单击时打开多个材料 UI 工具提示
- ip-address - 在 Bit Torrent 的 Wireshark 流量中定位 IP 地址
- ios - 根据添加或删除的 Firestore 文档的变化重新加载 tableView
- python - 如何定义具有各种名称的变量?
- oracle - 公开 Oracle ATP
- c++ - 线程没有看到带锁的刷新值
- python - python数组生成。这段代码是如何工作的?
- javascript - Typeit.js 从数组中输入随机字符串
- apache-kafka - 卡夫卡消费者:消费者和生产者之间的抵消滞后
- sql - TimescaleDB在时间间隔内查询发生