1

我一直在尝试为我们的 C# 应用程序实现 FitNesse 测试。我正在使用最新的 FitNesse jar 和 fitSharp .NET 2.2 4.0 库。

我已经能够使用 Slim 成功使用场景。但是,为了使测试对非技术人员更易读,我对实现 感兴趣DoFixtures,并且我想我需要SetUpFixtures为测试创建通用数据条件。

不过,我似乎无法将我设置的数据放入DoFixture实例中。我查看了几个资源(其中包括Gojko 的书主),但似乎没有人孤立地谈论这个概念。将 Visual Studio 作为调试器附加到测试运行并没有产生任何见解。我真的可以用一个简单的例子来分析和构建。

有人愿意分享一个例子,其中包括:

  • SetUpFixture设置一些数据 的类
  • DoFixture使用来自 SetUpFixture 的数据的 类
  • Wiki 语法来调用它们?
4

2 回答 2

1

我得到了部分答案。

使用这些类:

public class BirdCall : fitlibrary.SetUpFixture
{
    public void BirdNameNoise(string birdName, string noise)
    {
        BirdName = birdName;
        Noise = noise;
    }

    public string BirdName; 
    public string Noise;

    public override string ToString()
    {
        return string.Format("BirdCall: {0}, {1}", BirdName, Noise);
    }
}

public class SkylarkBunting : fitlibrary.DoFixture
{
    public BirdCall BirdCall;
    public string Call;

    public Fixture CryOut()
    {
        BirdCall = new BirdCall();
        Call = BirdCall.Noise;
        return BirdCall;
    }

    public string GetCall()
    {
        return BirdCall.Noise;
    }

    public string GetName()
    {
        return BirdCall.BirdName;
    }
}

和这个 Wiki 标记:

!define TEST_RUNNER {C:\temp\fitsharp\Runner.exe}
!define COMMAND_PATTERN {%m -r fitnesse.fitserver.FitServer,c:\temp\fitsharp\fit.dll %p}
!path C:\temp\FitNesseIntegration\bin\Debug\FitnesseIntegration.dll

!|import|
|FitnesseIntegration|

!|FitNesseIntegration.Skylark.SkylarkBunting|

!3 Testing getting data from a setup fixture into a do fixture

!|cry out|
|bird name|noise|
|Tweetie|Caw!|

|check|call||
|check|get call||
|check|get name||
|check|bird call||

我得到:

|check|call|null|
|check|get call|Caw!|
|check|get name|Tweetie|
|check|bird call|BirdCall: Tweetie, Caw!|

这很好,我有变量DoFixture通过执行SetUpFixtureFitNesse 通过页面注入的值来填充。

不过,我仍然想知道为什么 Call 返回null

于 2012-08-01T21:56:39.947 回答
1

看起来 SetUp 没有被调用。用于Debugger.Launch()调试

更新:

!|BirdCall|
|birdName|noise|
|duck|quack|

public class SkylarkBunting : fitlibrary.DoFixture
{
    public BirdCall BirdCall;

    public SkylarkBunting(BirdCall birdCall)
    {
        BirdCall = birdCall;
    }

    public string GetCall()
    {
        return BirdCall.Noise;
    }

    public string GetName()
    {
        return BirdCall.BirdName;
    }
}
于 2012-08-01T22:04:03.027 回答