java - Ploeh 的 AutoFixture for .Net 是否有 Java 替代品?

标签 java unit-testing mocking quickcheck autofixture

我正在寻找可以创建 anonymous variables 的 Java 工具。 (我不关心的变量)在我的测试中,类似于 .Net 中的 AutoFixture。这是 AutoFixture's readme 的链接,它有很好的例子来说明它的作用。

这是从同一个自述文件中摘录的一个简短示例:

[TestMethod]
public void IntroductoryTest()
{
    // Fixture setup
    Fixture fixture = new Fixture();

    int expectedNumber = fixture.CreateAnonymous<int>();
    MyClass sut = fixture.CreateAnonymous<MyClass>();
    // Exercise system
    int result = sut.Echo(expectedNumber);
    // Verify outcome
    Assert.AreEqual<int>(expectedNumber, result, "Echo");
    // Teardown
}

Java 世界有这样的工具吗?

编辑:

我尝试了 QuickCheck,虽然它成功地完成了我正在寻找的事情:

import net.java.quickcheck.Generator;
import net.java.quickcheck.generator.PrimitiveGenerators;
import net.java.quickcheck.generator.support.ObjectGeneratorImpl;

public class Main {

interface Test{
     String getTestValue();
}

public static void main(String[] args) {
    Generator<String> stringGen = PrimitiveGenerators.strings(5, 100);
    Generator<Integer> intGen = PrimitiveGenerators.integers(5, 20);

    ObjectGeneratorImpl<Test> g = new ObjectGeneratorImpl<>(Test.class);
    g.on(g.getRecorder().getTestValue()).returns(stringGen);


    for (int i = 0; i < intGen.next(); i++) {
        System.out.println("value of testValue is: " + g.next().getTestValue());
    }
}

}

该工具似乎只适用于接口(interface)。如果我将 Test 更改为类并将方法更改为字段,则生成器会引发仅支持接口(interface)的异常。

我真诚地希望有更好的东西,特别是因为文档严重缺乏。

最佳答案

还有 JFixture,可在 github 上获得并发布到 maven central .

这仍在积极开发中,并且正在满足功能请求。

关于java - Ploeh 的 AutoFixture for .Net 是否有 Java 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11367349/

相关文章:

java - JFreeChart是否支持三维图表

c# - Java Socket 服务器和客户端 Socket C# 问题

unit-testing - vue-test-utils:如何在 mounted() 生命周期 Hook (使用 vuex)中测试逻辑?

javascript - 链接函数中的 Angular 单元测试 $attrs

android - Robolectric (Android) : Using ShadowLocationManager ? 是否可配置?

java - 在不关闭连接的情况下根据请求将数据从服务器推送到客户端?

qt - 使用 Qt 的 QTestLib 模块进行测试

c# - 根据其他方法输入返回一个值

c++ - 关于模拟系统调用的建议

java - $1.class 和 $2.class 不是 jgroups 中的可序列化异常