如何在Java中在运行时更改方法名称?

3
我有一个测试方法,它从Excel表格中获取参数。假设我有5个测试用例,那么这个方法将会执行5次。但是当我执行第一个测试用例(TC01)时,Test() 方法的名称应该根据测试脚本在运行时更改,比如 Test_TC01(),Test_TC02() 等。
@Test
public void Test() throws Exception {

    ExcelUtils.setExcelFile(System.getProperty("user.dir") + "\\src\\data_engine\\DataEngine.xlsx");
    DOMConfigurator.configure("log4j.xml");
    String Path_OR = System.getProperty("user.dir") + "\\src\\config\\OR.properties";
    FileInputStream fs = new FileInputStream(Path_OR);
    OR = new Properties(System.getProperties());
    OR.load(fs);

    DriverScriptTest startEngine = new DriverScriptTest();

    startEngine.execute_TestCase();

}

请分享您的评论。

反射对于你的问题是否必需?为什么不使用工厂模式呢? - Developer Marius Žilėnas
@Stultuske 我正在从单个方法执行多个Selenium测试脚本。现在我想要跟踪每个方法的状态以包含在报告中。因此,我希望根据参数或测试脚本动态更改方法名称。 - Rahul Karankal
@RahulKarankal 一个测试应该只测试一件事情。创建多个测试。 - Stultuske
@Stultuske 我已经创建了多个测试,但我正在使用单个方法调用每个测试,而创建单独的方法是不可行的,因为我有2700个测试方法。现在我的测试框架很稳定,并且可以给出正确的结果,但我只想在报告中包含方法名称。 - Rahul Karankal
@Willmore 不需要反射来解决我的问题,但我不想创建对象。我只想在运行时更改方法名称。比如说我有一个名为Test_1()的方法,我想在运行时将其名称更改为Test_2()。 - Rahul Karankal
显示剩余5条评论
1个回答

2
简而言之,你不能直接这样做。你需要在运行时创建一个新的类,并编译和运行它。也就是说,你需要编写代码来:1. 创建类(在一个临时文件中);2. 使用Java编译器API来编译这个类;3. 在编译后的类实例上调用方法。祝好运!我已经使用过这段代码,它非常有趣,但除非你真的需要它,否则几乎总是过度的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接