我在TestInfoFinder
中有一个名为Project1
的Java类,它扩展了TestCase,如下所示:
public class TestInfoFinder extends TestCase {
private ClassFinder classFinderService = null;
public void setUp() {
classFinderService = new ClassFinderService();
}
public List<Integer> testFindAnnotatedClassByPackage() throws ClassNotFoundException, NoSuchMethodException, SecurityException {
String pattern = "\\bid\\b=\\[(.+?)\\]";
Pattern r = Pattern.compile(pattern);
List<String> classFilePaths = classFinderService.findAnnotatedClassesInPackage("com.mobile.tests", TestInfo.class);
Set<String> set = new HashSet<>();
set.addAll(classFilePaths);
classFilePaths.clear();
classFilePaths.addAll(set);
List<Integer> myListIntegers = new ArrayList<Integer>();
for (String ids : classFilePaths) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(ids);
while (m.find()) {
myListIntegers.add(Integer.parseInt(m.group()));
}
}
for(int str: myListIntegers)
{
System.out.println(str);
}
return myListIntegers;
}
}
使用ClassFinderService
类及其方法findAnnotatedClassesInPackage()
,此类位于另一个项目Project2
和not Project1
中。
TestInfoFinder
中的 finds annotations
类最初为com.mobile.tests
,然后创建一个名为classFilePaths
的列表。然后我将classFilePaths列表的这些String值转换为整数(这是我想要的)并将它们存储在myListIntegers
列表中。最重要的是第一个Java项目的部分说Project1
现在,我有另一个项目说Project2
有一个名为Integration.java的类,它有一个方法:
public static String addRun() {
........
...
List<Integer> cases = new ArrayList<Integer>();
for (int index=0; index < myListIntegers.length; index++)
{
cases.add(myListIntegers[index]);
}
}
在上面的代码段中,myListIntegers
应来自我的Project1's
班级returned List (from TestInfoFinder class)
对于Project1和Project2的上述方案,如何将returned list
中的Project1
用于Project 2
?另外,有没有更好的方法来修改Project1中的类TestInfoFinder
(截至目前,我必须运行整个类来获取列表,而其他东西对我的目标更好)?
答案 0 :(得分:0)
这可以解决
1)如果您将列表创建为类变量并将返回的列表分配给类变量。
2)在项目2中,您需要获得类的引用,并尝试从引用中获取列表。