代码之家  ›  专栏  ›  技术社区  ›  Keith Adler

模拟对象数据

  •  4
  • Keith Adler  · 技术社区  · 15 年前

    Lorem Ipsum 对象数据。数值范围等方面的限制是没有必要的,但将是一个额外的好处。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Travis Brooks    15 年前

    当我读到你的问题时,我想到的第一件事就是QuickCheck,一个Haskell的测试工具。在QuickCheck中,您可以指定函数应该具有的属性(不变量),并且可以为输入指定有效的范围(再加上一堆特性),QuickCheck将生成一堆随机输入数据,并将其扔给函数,同时检查输出是否与规范匹配。我四处打听了一下,发现有一个F#端口,所以在.net世界中存在快速检查:

    http://fscheck.codeplex.com/

    还有一个MS研究项目Pex可能与您的想法非常接近:

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

    “…Pex可以找到方法的有趣的输入输出值,您可以将这些值保存为具有高代码覆盖率的小型测试套件。Microsoft Pex是用于测试.NET Framework应用程序的Visual Studio外接程序。”

        2
  •  4
  •   CodingWithSpike    14 年前

    Ruby似乎还有一个.NET端口 Faker gem,它在Ruby中大量用于操纵假数据对象。我没用过,但值得一看:

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

        3
  •  4
  •   Ivan Alagenchev    13 年前

    我很惊讶没有人提到 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
    }
    
        4
  •  2
  •   Paul Williams    15 年前

    你可以设置一个 ObjectRandomizer 类,该类接受一个对象数组,使用反射检查对象中的私有成员,然后使用反射为该成员设置一个随机值。只有当您不关心每个对象的随机数据是什么样子时,这种方法才有效。

    Person 同学们,你们可以 PersonRandomizer 在测试程序集中初始化。在你的测试课上(或 Randomizer 类),然后可以使用反射来查找类型 人格随机化者 PersonRandomizer.Randomize(Person p) .

    如果你同意yahya的建议,我建议创建一个接口 IRandomizable 对于支持随机化或使用新属性标记它们的对象 Randomizable 您可以在运行时检测到的。

        5
  •  1
  •   yahya    15 年前

    推荐文章