我想小样对象数据,而不是对象本身。换句话说,我想生成n个对象的集合,并将它传递到其生成随机数据字符串和数字的功能。有什么要做到这一点?把它看成是一个 Lorem存有获取对象数据。周围的数值范围等约束不是必要的,但将是一个奖金。

有帮助吗?

解决方案

我想,当我读了你的问题的第一件事是快速检查,Haskell的测试工具。在快速检查您指定的属性(不变),你的功能应该有,你可以输入指定的有效范围(再加上一堆更多的功能),以及快速检查将产生一串随机输入数据,并在你的函数把它和检查过查看如果输出规格相匹配。周围一点点,我发现那里是它的一个F#端口,以便快速检查在.NET世界存在收口:

http://fscheck.codeplex.com/

还有一个MS研究项目的Pex,可能是接近你在想什么的:

http://research.microsoft.com/en-us/projects/Pex /

“...的Pex找到你的方法,你可以保存为一个小的测试套件具有高的代码覆盖率有趣的输入输出值。微软的Pex是一个Visual Studio插件,用于测试.NET Framework应用程序。”

我以前没有使用过它,但它看起来像它是良好的即行使的功能的任何和所有分支生成边缘情况下的数据。它实际上分析的功能,而不是仅仅在它扔真正随机的东西。

其他提示

有也似乎是Ruby的Faker宝石,它获取大量的使用用于Ruby的索具假数据对象的.NET端口。我没有用它,但它可能是值得探讨:

https://github.com/slashdotdash/faker-cs

我惊讶的是,没有人提到 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
}

您可能设置一个ObjectRandomizer类,它的对象的阵列,使用反射来检查为私有成员的对象,然后使用反射来设置该构件的随机值。这只有你不在乎随机数据的外观每个对象等。

或者,可以构建一组类为,对他们产生随机数据中的每个数据对象。这可能会工作得很好,如果你不想包括实际组件内随机生成方法。举例来说,如果你有一个Person类,你可以在测试组件PersonRandomizer类。在您的测试类(或在Randomizer类),然后,您可以使用反射来寻找类型PersonRandomizer,如果它存在,调用PersonRandomizer.Randomize(Person p)

如果您与叶海亚的建议去了,我建议创建对象支持随机接口IRandomizable或用新的属性Randomizable,你可以在运行时检测其标记。

有关我的测试中我只是添加了一个方法上所有的课我创造,这是否和随机化调用它。每个类都知道这个类的一个对象的合法数据应该是什么样子。创建对象后,只需调用它的随机化方法,随机模拟数据备份到填充它。你也可以将专用的方法来生成基于约束的随机数据字符串或数字和这些特殊方法可以在所有类中共享。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top