Skip to content

Commit ce827e4

Browse files
committed
added functionality to capture import declarations
1 parent 92dedb3 commit ce827e4

4 files changed

Lines changed: 94 additions & 6 deletions

File tree

src/main/java/Main.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ public static void main(String[] args) throws IOException {
2020
TestFileDetector testFileDetector;
2121
for (FileEntity fileEntity : files) {
2222
try {
23-
testFileDetector = new TestFileDetector();
24-
fileEntity.setMethods(testFileDetector.parseFile(fileEntity.getFilePath()));
23+
testFileDetector = new TestFileDetector(fileEntity.getFilePath());
24+
fileEntity.setMethods(testFileDetector.getMethodDetails());
25+
fileEntity.setImports(testFileDetector.getImportDetails());
2526
} catch (Exception e) {
2627
Util.writeException(e, "File: " + fileEntity.getFilePath());
2728
}

src/main/java/ResultsWriter.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,27 @@ private void outputTestMethodResults() throws IOException {
6868
private void outputTestFileResults() throws IOException {
6969
CSVWriter writer = new CSVWriter(new FileWriter(testFileCSV.toString()), ',');
7070
List<String[]> fileLines = new ArrayList<String[]>();
71-
String[] columnNames = {"FilePath", "FileName", "TotalMethods","TotalTestMethods","AnnotationCount", "TestsWithoutAnnotationCount", "HasTestInFileName"};
71+
String[] columnNames = {"FilePath", "FileName", "TotalMethods","TotalTestMethods","AnnotationCount", "TestsWithoutAnnotationCount", "HasTestInFileName",
72+
"junit.framework.Test", "junit.framework.TestCase", "org.junit.Test", "android.test.AndroidTestCase", "android.test.InstrumentationTestCase", "org.junit.Assert"};
7273
fileLines.add(columnNames);
7374

7475
String[] dataLine;
7576
for (FileEntity fileEntity: files) {
7677
try {
77-
dataLine = new String[7];
78+
dataLine = new String[13];
7879
dataLine[0] = fileEntity.getFilePath();
7980
dataLine[1] = fileEntity.getFileName();
8081
dataLine[2] = String.valueOf(fileEntity.getMethods().size());
8182
dataLine[3] = String.valueOf(fileEntity.getTotalTestMethods());
8283
dataLine[4] = String.valueOf(fileEntity.getTestAnnotationCount());
8384
dataLine[5] = String.valueOf(fileEntity.getTestMethodWithoutAnnotationCount());
8485
dataLine[6] = fileEntity.isHasTestInFileName()?"True":"False";
86+
dataLine[7] = fileEntity.getHas_junitframeworkTest()?"True":"False";
87+
dataLine[8] = fileEntity.getHas_junitframeworkTestCase()?"True":"False";
88+
dataLine[9] = fileEntity.getHas_orgjunitTest()?"True":"False";
89+
dataLine[10] = fileEntity.getHas_androidtestAndroidTestCase()?"True":"False";
90+
dataLine[11] = fileEntity.getHas_androidtestInstrumentationTestCase()?"True":"False";
91+
dataLine[12] = fileEntity.getHas_orgjunitTest()?"True":"False";
8592

8693
fileLines.add(dataLine);
8794
} catch (Exception e) {

src/main/java/TestFileDetector.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,36 @@
11
import com.github.javaparser.JavaParser;
22
import com.github.javaparser.ast.CompilationUnit;
3+
import com.github.javaparser.ast.ImportDeclaration;
34
import com.github.javaparser.ast.body.MethodDeclaration;
45
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
56
import entity.MethodEntity;
67

78
import java.io.FileInputStream;
89
import java.io.FileNotFoundException;
910
import java.util.ArrayList;
11+
import java.util.HashMap;
1012
import java.util.List;
13+
import java.util.Map;
1114

1215
public class TestFileDetector {
1316
private String absoluteFilePath;
1417
private List<MethodEntity> methods;
18+
private Map<String, Boolean> imports;
1519

16-
public TestFileDetector() {
20+
public TestFileDetector(String absoluteFilePath) throws FileNotFoundException {
1721
methods = new ArrayList<>();
22+
imports = new HashMap<>();
23+
imports.put("junit.framework.Test",false);
24+
imports.put("junit.framework.TestCase",false);
25+
imports.put("org.junit.Test",false);
26+
imports.put("android.test.AndroidTestCase",false);
27+
imports.put("android.test.InstrumentationTestCase",false);
28+
imports.put("org.junit.Assert",false);
29+
30+
parseFile(absoluteFilePath);
1831
}
1932

20-
public List<MethodEntity> parseFile(String absoluteFilePath) throws FileNotFoundException {
33+
private void parseFile(String absoluteFilePath) throws FileNotFoundException {
2134
this.absoluteFilePath = absoluteFilePath;
2235

2336
if(absoluteFilePath.length()!=0){
@@ -26,9 +39,17 @@ public List<MethodEntity> parseFile(String absoluteFilePath) throws FileNotFound
2639
ClassVisitor cv = new ClassVisitor();
2740
cv.visit(compilationUnit,null);
2841
}
42+
}
2943

44+
public List<MethodEntity> getMethodDetails(){
3045
return methods;
3146
}
47+
48+
public Map<String, Boolean> getImportDetails(){
49+
return imports;
50+
}
51+
52+
3253
private class ClassVisitor extends VoidVisitorAdapter<Void> {
3354
@Override
3455
public void visit(MethodDeclaration n, Void arg) {
@@ -47,6 +68,34 @@ public void visit(MethodDeclaration n, Void arg) {
4768
super.visit(n, arg);
4869
}
4970

71+
@Override
72+
public void visit(ImportDeclaration n, Void arg) {
73+
if (n.getNameAsString().contains("junit.framework.Test")){
74+
imports.replace("junit.framework.Test",false,true);
75+
}
5076

77+
if (n.getNameAsString().contains("junit.framework.TestCase")){
78+
imports.replace("junit.framework.TestCase",false,true);
79+
}
80+
81+
if (n.getNameAsString().contains("org.junit.Test")){
82+
imports.replace("org.junit.Test",false,true);
83+
}
84+
85+
if (n.getNameAsString().contains("android.test.AndroidTestCase")){
86+
imports.replace("android.test.AndroidTestCase",false,true);
87+
}
88+
89+
if (n.getNameAsString().contains("android.test.InstrumentationTestCase")){
90+
imports.replace("android.test.InstrumentationTestCase",false,true);
91+
}
92+
93+
if (n.getNameAsString().contains("org.junit.Assert")){
94+
imports.replace("org.junit.Assert",false,true);
95+
}
96+
97+
98+
super.visit(n, arg);
99+
}
51100
}
52101
}

src/main/java/entity/FileEntity.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import java.nio.file.Path;
44
import java.util.List;
5+
import java.util.Map;
56

67

78
public class FileEntity {
89
private Path path;
910
private int totalLines;
1011
private List<MethodEntity> methods;
12+
private Map<String, Boolean> imports;
1113

1214
public FileEntity(Path path) {
1315
this.path = path;
@@ -21,6 +23,10 @@ public void setMethods(List<MethodEntity> methods) {
2123
this.methods = methods;
2224
}
2325

26+
public void setImports(Map<String, Boolean> imports) {
27+
this.imports = imports;
28+
}
29+
2430
public int getTotalLines() {
2531
return totalLines;
2632
}
@@ -52,4 +58,29 @@ public String getFileName(){
5258
public long getTotalTestMethods() {
5359
return (getTestMethodWithoutAnnotationCount() + getTestAnnotationCount());
5460
}
61+
62+
public boolean getHas_junitframeworkTest(){
63+
return imports.get("junit.framework.Test");
64+
}
65+
66+
public boolean getHas_junitframeworkTestCase(){
67+
return imports.get("junit.framework.TestCase");
68+
}
69+
70+
public boolean getHas_orgjunitTest(){
71+
return imports.get("org.junit.Test");
72+
}
73+
74+
public boolean getHas_androidtestAndroidTestCase(){
75+
return imports.get("android.test.AndroidTestCase");
76+
}
77+
78+
public boolean getHas_androidtestInstrumentationTestCase()
79+
{
80+
return imports.get("android.test.InstrumentationTestCase");
81+
}
82+
83+
public boolean getHas_orgjunitAssert(){
84+
return imports.get("org.junit.Assert");
85+
}
5586
}

0 commit comments

Comments
 (0)