0
我写自动生成的单元测试例。应用程序的应用程序需要输入一个java文件,然后处理的它找到它的所有方法。然后使用以下命令使用测试数据调用这些方法。 method.invoke(classObj,MethodArg); 现在我希望找到在被调用的方法中执行的行来计算覆盖范围。我已经尝试使用StackTrace()来完成此操作,但它提供了我的应用程序代码的行号。 任何人都可以帮助我。我完全彻底迷失了。任何帮助将不胜感激。 我当前的代码是:获取的代码行数执行
Runnable myRunnable;
myRunnable = new Runnable(){
public void run(){
try {
int returnValInt = (int) fm.invoke(fobj, fargs);
System.out.println(new Exception().getStackTrace()[0].getLineNumber());
} catch (IllegalAccessException ex) {
Logger.getLogger(HelloWorldFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalArgumentException ex) {
Logger.getLogger(HelloWorldFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(HelloWorldFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
Thread th= new Thread(myRunnable, "th");
th.start();
'new Exception()'在您的代码中的一行中创建。所以它当然会在你的代码中引用该行。是否有任何理由创建自己的测试框架,而不是使用其中的一种标准测试框架,例如JUnit的? – 2013-05-02 11:10:53
我怀疑代码覆盖是如何完成或完全可以完成的。我想你可能需要一个VM代理来做一些低级别的跟踪。 – millimoose 2013-05-02 11:16:23