相关疑难解决方法(0)

如何使用堆栈跟踪或反射找到方法的调用者?

我需要找到一个方法的调用者.是否可以使用堆栈跟踪或反射?

java stack-trace

378
推荐指数
8
解决办法
25万
查看次数

获取JUnit 4中当前正在执行的测试的名称

在JUnit 3中,我可以得到当前运行的测试的名称,如下所示:

public class MyTest extends TestCase
{
    public void testSomething()
    {
        System.out.println("Current test is " + getName());
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这将打印"当前测试是testSomething".

在JUnit 4中是否有任何开箱即用或简单的方法可以做到这一点?

背景:显然,我不想只打印测试的名称.我想加载存储在与测试同名的资源中的特定于测试的数据.你知道,约定优于配置和所有这些.

java junit unit-testing

231
推荐指数
7
解决办法
11万
查看次数

检索Java注释属性

如何在带注释的方法上检索注释的值?

我有:

@myAnnotation(attribute1 = value1, attibute2 = value2)
public void myMethod()
{
  //I want to get value1 here
}
Run Code Online (Sandbox Code Playgroud)

java annotations

38
推荐指数
2
解决办法
5万
查看次数

如何在java中获取方法的字符串名称?

如何通过反射找出方法的字符串名称?

例如给出:

class Car{
   public void getFoo(){
   }
}
Run Code Online (Sandbox Code Playgroud)

我想得到字符串"getFoo",如下所示:

 Car.getFoo.toString() == "getFoo" // TRUE
Run Code Online (Sandbox Code Playgroud)

java reflection

26
推荐指数
4
解决办法
6万
查看次数

如何在Java中从该方法中查找方法名称?

我想知道是否有办法知道在运行时执行的方法名称?

例如,在private void doSomething (String s)方法内部,我想知道我正在执行该doSomething (String s)方法.

java methods

26
推荐指数
2
解决办法
6万
查看次数

获取getStackTrace()[2] .getMethodName()的不同结果

出于日志记录的目的,我创建了一个方法logTitle(),它打印出TestNG测试的调用方法名称.示例代码如下.

@Test
public void test1() throws Exception {
    method1();
}

public static void method1() throws Exception {
    Utils.logTitle(2);
}
Run Code Online (Sandbox Code Playgroud)

...

public static void logTitle(Integer level) throws Exception {

    // Gets calling method name
    String method = Thread.currentThread().getStackTrace()[2].getMethodName();
    // This would get current method name
    switch (level) {
    case 1:
        logger.info("=======================================================");
        logger.info(method);
        logger.info("=======================================================");
        break;
    case 2:
        logger.info("------------------------------------");
        logger.info(method);
        logger.info("------------------------------------");
        break;
    case 3:
        logger.info("---------------------");
        logger.info(method);
        logger.info("---------------------");
        break;
    case 4:
        logger.info("--------- " + method + " ------------");
        break;
    default:
        logger.info(method);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我在两台不同的机器上获得了不同的logTitle()结果. …

java testng

19
推荐指数
2
解决办法
2389
查看次数

获取封闭方法的名称

有这个方法

public void foo(){
  //..    
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在运行时获取methodName(在本例中为foo)?

我知道如何获得classname

this.getClass().的getName()

或者通过Method[] methods = this.getClass().getMethods(); 方法名称获取所有公共方法 一旦参数也很重要,因为可能有多个具有相同名称的方法

java reflection

11
推荐指数
3
解决办法
8993
查看次数

用于动态获取当前方法名称的较短方法

我正在寻找一种方法来获取当前方法的名称,而无需创建空白对象.有没有办法做到这一点?这将整理我们的日志代码.

以下是我们现在所做的事情:

new Object() {}.getClass().getEnclosingMethod().getName(
Run Code Online (Sandbox Code Playgroud)

java

11
推荐指数
2
解决办法
2万
查看次数

Logback - 打印调用日志方法的方法名称

在我的示例中,我有以下代码:

package com.example.somepackage;

public class Example {
    public static void main(String[] args) {
        org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Example.class);
        logger.info("Example message.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望它像这个最小的例子一样输出到控制台:

com.example.somepackage.Example.main Example message.
Run Code Online (Sandbox Code Playgroud)

我唯一需要的是:

  • 放入logback.xml文件或模式的模式
  • 关于我需要添加到我的示例代码场景的更多代码的说明

如果使用额外代码而不是XML配置模式,请同时提供有关如何配对这两者的信息,因此除了打印出的方法名称之外,还可以使用时间,日志级别等模式.

java logging logback slf4j

10
推荐指数
1
解决办法
2万
查看次数

junit 4.10如何在测试开始运行之前打印测试用例名称

junit 4.10如何在测试开始运行之前打印测试用例名称..

所以我想在这里打印"sampleTest".

我怎么在junit 4.10做到这一点?先感谢您

class1:
TestSuite all = new TestSuite();
all.addTestSuite(class2);
all.run(result);

class2:
public class profileTest extends TestCase()
{
  //I want to print the test cases name before the test actually starts executing

    @Test
    public void sampleTest1(){
        //Some code here.
    }

    @Test
    public void sampleTest2(){
    //some more code here.
    }
}
Run Code Online (Sandbox Code Playgroud)

java junit

9
推荐指数
2
解决办法
1万
查看次数