【问题标题】:How to verify what parameters are passed to a static method in java如何验证将哪些参数传递给java中的静态方法
【发布时间】:2012-07-30 10:39:47
【问题描述】:

作为我的 Junit 测试的一部分,我想验证我是否正在使用正确的参数调用外部类的静态方法。

例如:- 假设我有以下作为被测类。

class A {
    public static void someMethod(String param){
          some.thirdpartyClass.someStaticMethod(param);
    }      
}

现在我想作为 someMethod 测试的一部分进行测试,我用参数 param

调用了 someStaticMethod

最简单的方法是什么?我尝试过 power mock 但找不到方法。

【问题讨论】:

  • 我不确定你做到这一点。也许一开始就有更可测试的方法来设计它?
  • No..限制是因为我使用的框架。具体来说,我正在使用 Playframework 并尝试通过不验证视图的结果来测试控制器,但测试是否正确正在使用视图名称。
  • 当您使用 Play Framework 时,您可能也会对他们对单元测试的反馈感兴趣。
  • @Brice 我看到了他们推荐的测试控制器的方法,但他们建议我们开始断言从控制器返回的 HTML 内容,我觉得这不是真正的单元测试。对于单元测试,我只关心被调用的模板的名称
  • @Ankit 哦,他们这么说...嗯,我的感觉几乎和你一样。但是,如果模板返回具有特定 id 的元素,您可能会对 FluentLenium 感兴趣,它可以填补他们所说的和您想要的之间的空白。

标签: java unit-testing junit mockito powermock


【解决方案1】:
【解决方案2】:

使用 PowerMock 并不难,但这里有一个使用 JMockit 的更简单的解决方案:

public class ATest
{
    @Test
    public void testSomeMethodInIsolation(@Mocked ThirdPartyClass tpc)
    {
        final String param = "testing";

        new A().someMethod(param);

        new Verifications() {{ ThirdPartyClass.someStaticMethod(param); }};
    }
}

【讨论】:

  • 我试过用这个,但它对我来说不是开箱即用的......它给了我 java.lang.Exception: Method test should have no parameters
  • 在运行时类路径中将 jmockit.jar 移到 junit.jar 之前。或者使用 TestNG。
猜你喜欢
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
相关资源
最近更新 更多