【发布时间】:2016-03-09 16:58:28
【问题描述】:
我正在使用以下代码来识别项目中的测试类,整个想法是找到测试类并将测试代码的数量与生产代码进行比较!这是我的一段代码,它负责查找测试类并计算行数:
for (File f : list) {
if (f.isDirectory()) {
walk(f.getAbsolutePath());
}
if (f.getName().endsWith(".java")) {
System.out.println("File:" + f.getName());
countFiles++;
Scanner testScanner = new Scanner(f);
while (testScanner.hasNextLine()) {
String test = testScanner.nextLine();
if (test.contains("org.junit") || test.contains("org.mockito") || test.contains("org.easymock")) {
hasTestLines = true;
// break;
}
testCounter++;
}
但是在几个项目上运行代码后,我意识到找到包含Unit 或EasyMock 或Mockito 的测试类的想法并不是找到测试类的最佳实践,因为几个项目使用自己的测试方法!所以问题是有比我更好的方法来定义测试类吗?
谢谢
【问题讨论】:
-
如果您要寻找自定义测试类,我可以在其中命名任何我想要的类和函数,那么您可能不走运。话虽这么说,通常人们会将他们的函数命名为“test ...”,因此您可以计算名称中包含“test”的函数的数量。我看到的另一个问题是您的代码会识别在 cmets 中有
org.junit的文件。 -
所以您认为应该手动研究和计算自定义测试类?
-
这是一个 Maven 项目吗?你可以使用 Maven 插件吗?
Sonarplugin 代码覆盖率? -
除非您知道用于这些测试类的模式。例如,我可以用函数
tInt和tFloat命名一个类TClasses。对于此类,名称前面的“t”表示测试。但要提前知道这一点并不容易。除非这是您正在分析的所有(或部分)项目的标准。
标签: java