java - Java单元测试执行过程中的方法调用列表

标签 java junit aspectj call-graph javaagents

在这种情况下,我需要知道从单个 JUnit 测试中调用了哪些方法。例如,如果我有以下伪代码:

public class UnitTest {    
  public main() {
    Circle c = new Circle()
    c.getArea()
  }
} 

public class Circle {
  public Circle() {
    ...
  }    
  public getArea() {
    ...
    getRadius()
  }
  private getRadius() {
    ...
  }
}

UnitTest 类的方法调用遵循以下顺序(尽管出于我的目的,我不需要保留顺序,也不需要知道调用者的方法):

  1. 单元测试.main
  2. 圆.圆
  3. Circle.getArea
  4. Circle.getRadius

基本上,我想知道在 JUnit 测试中实际执行了程序的哪一部分。我想我可以动态地解决这个问题,但我找不到工具或方法。我发现的一些工具的主要问题是它们通常非常直观(需要用户交互才能提取所需数据)。我正在寻找一些没有 GUI 方面的方法(xml、文本等)的列表。最后,我试图通过脚本方法为测试套件自动化这一点。

我正在考虑使用的方法是:

  • 使用 Java 代理在每次方法调用时打印出 class.method
  • 使用方面进行跟踪 like this

如果有一个工具已经可以做到这一点,那就太好了。如果没有,我是否正在使用我指定的方法之一解决我的问题。

如有任何帮助/建议,我们将不胜感激。

已更新解决 我决定使用 Emma 和以下命令来提取方法调用的信息(只需要解析覆盖率超过 0% 的任何方法的报告):

emmarun -r xml                 // To output to XML
  -Dreport.sort=-method        // Sort method coverage in descending order
  -Dverbosity.level=silent     // Minimize script output
  -Dreport.metrics=method:1    // Flag any method with a 0% coverage
  -Dreport.columns=method,name // Only show the method and name columns
  -Dreport.depth=method        // Consider the data of method coverage

最佳答案

您是否在寻找“覆盖”工具,例如 EmmaCobertura

关于java - Java单元测试执行过程中的方法调用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013921/

相关文章:

java - 如何在 ms access 中插入值以及自动生成的字段

java - 使用 ant 在两个 jvm 中并行运行 junit

java - 使用模拟用户输入进行 JUnit 测试

java - Spring AOP - @Around Error at::0 在切入点中正式未绑定(bind)

java - Websphere 8.5 上的异常启动应用程序

java - 如何在android中的两个子 Activity 之间传输数据?

java - 带有局部变量注解的 AOP

java - AspectJ:跟踪新对象初始化

java - 如何用java ActionListener中的代码单击JButton

java - jUnit assertEquals string return "50"expected "50"but returned nothing 测试