我有两个测试非常相似功能的java测试用例。使用IntelliJ的覆盖率报告,可以看到每个测试的源代码覆盖率。
现在我想看看两个测试之间的区别。实施例
void foo(a) {
if (a>4) { print("hu"); }}
测试用例1:
foo(1);
测试用例2:
foo(5);
现在我希望IntelliJ告诉我'print(“hu”)'仅由testcase1调用。我该怎么做?
答案 0 :(得分:0)
您可以找到方法的来电者
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
此StackTraceElement
有getClassName()
,而getMethodName()
可帮助您找到来电者。
例如:
public class A {
public void foo(int a) {
if (a > 4) {
System.out.println("hu");
StackTraceElement[] stackTraceElements = Thread.currentThread()
.getStackTrace();
System.out.println(stackTraceElements[2].getMethodName());
}
}
class Result {
public static void main(String[] args) {
methodA();
}
public static void methodA(){
new A().foo(5);
}
public static void methodB(){
new A().foo(2);
}
}
}
Out put:
hu
methodA