有没有Java替代Ploeh的AutoFixture for .Net?

我正在寻找一种Java工具,它可以在我的测试中创建匿名变量(我不关心其值的变量),类似于.Net中的AutoFixture。这是AutoFixture自述文件的链接,其中有很好的例子说明它的作用。

下面是一个取自同一自述文件的简短示例:

[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());
    }
}

}

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

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


答案 1

还有JFixture,可以在github上找到,并发布到maven central

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


答案 2

伊凡

我开始了一个项目,专注于在java中重新实现AutoFixture的核心功能。AutoFixture当然有很多功能,所以我需要优先考虑哪些功能首先实现,哪些功能根本不费心实现。由于该项目刚刚启动,我欢迎测试,缺陷报告和功能请求。


推荐