【问题标题】:FitNesse not invoking overloading methodFitNesse 不调用重载方法
【发布时间】:2021-02-24 12:15:16
【问题描述】:

我通过扩展它为 pojo MyClass 创建了一个包装类 MyClassFixture,以使其字段的初始化更加用户友好。例如。我想在 wiki 页面上使用我自己的日期格式,并在重载设置器中解析该日期。因此,我不想从MyClass 调用setWorkDay(long millis),而是从MyClassFixture 调用setWorkDay(String formatedDate) 并解析formatedDate 字符串,然后调用父MyClasssetWorkDay(long)

当我从 wiki 页面运行测试时,它运行良好,但当我使用 JUnit runner 运行它时,它不起作用。我得到的错误信息:

Can't convert 2016-03-05 to long. Tried to invoke: foo.bar.MyClass.setWorkDay(long) -> void. On instance of: foo.bar.MyClassFixture

我尝试过使用不同的字符串参数,但总是调用 setWorkDay(long) 方法。 这是为什么呢?

谢谢!

【问题讨论】:

    标签: java junit fitnesse-slim


    【解决方案1】:

    我在 FitNesse 代码中找到了答案。它匹配方法名称和参数数量,但不匹配参数类型。

    使用fitnesse-standalone.jar 和使用JUnit runner 之间的差异是由于使用了不同的JRE 实现(IBM 与Oracle)造成的。 instance.getClass().getMethods() 以不同的顺序返回方法,FitNesse 选择最后一个。

    所以安全的解决方案不是重载,而是使用不同的方法名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      相关资源
      最近更新 更多