Ploeh的AutoFixture for .Net是否有Java替代方案?

Iva*_*hev 20 java unit-testing mocking quickcheck autofixture

我正在寻找一个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
}
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

小智 8

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

这仍处于积极开发阶段,功能请求正在得到尊重.


Chr*_*est 3

QuickCheck 有一个 Java 实现,它具有用于生成测试数据的 API:

http://java.net/projects/quickcheck/pages/Home

我对 AutoFixture 不太熟悉,我怀疑 QuickCheck 是一种稍微不同的测试框架,但也许它对于解决您的特定问题很有用。