How to stub a java final static methods or class in Spock?

问题描述 投票:0回答:1

我正在尝试在 Spock 中编写单元测试来测试这个

verify()
方法,但是
Files.getOwner(path)
总是抛出
NoSuchFileException
异常,我怎样才能防止这种情况并使
owner
where
条件下参数化?试图存根
Files
对象但没有运气。

    public void verify(){
        try{
            Path path = Paths.get("/tmp");
            String owner = Files.getOwner(path).getName();
            if (owner.equals("root")) {
                anotherClass.doSomthing();
            }
        } catch (IOException e) {
            log().error("message");
        }
    }

注意我不能在这里使用

PowerMock
JMockit
,源代码在
Java
,测试代码在
Groovy
.

java groovy mocking spock stubbing
1个回答
0
投票

第三方工具列表中,您可以找到spock-mockable和其他工具的链接。

此处未列出,但可通过相应的扩展机制从 Spock 1.x/2.x、JUnit 4/5、TestNG 或作为 Java 代理的任何其他测试工具使用,您可以使用 Sarek,我开发了一段时间的框架之前为我自己的最终目标是更好地将它集成到 Spock DSL 中,但由于个人原因从未发生过。但它功能齐全,可以涵盖比第三方工具列表中列出的工具更复杂的情况,例如模拟/修改构造函数、JVM 引导程序类、静态初始化程序块。它有点笨拙,但非常强大。查看每个模块中的 Javadoc 和测试,以了解如何使用

  • 高级API,
  • 低级API,
  • Spock、JUnit 4/5、TestNG 的测试扩展

spock-mockable 可能对大多数用例来说已经足够好了,并且很容易通过注释应用。如果您需要更多功能,请随时联系我了解 Sarek,如果您找不到如何解决您的特定用例。

© www.soinside.com 2019 - 2024. All rights reserved.