Fitnesse with .NET在运行套件时会被神秘地卡住

时间:2010-07-11 22:27:44

标签: .net fitnesse

(当然我可以说这是“神秘的”,因为我无法确定问题。我希望你们其中一位博学的读者能够明白这一点,你们可以开导我:-)

在我的浏览器(FireFox或IE)中运行单个fitnesse测试工作正常,但是当我运行一套测试或一套套件时,Fitnesse在开始后很快停在某个地方。它从未报告测试完成;它只是挂起。

我在Windows XP上针对.NET 3.5代码库运行fitnesse。我首先通过检测fitnesse测试和带有诊断代码的fitnesse灯具来试图确定它是否确实是fitnesse锁定或(更有可能)我的代码库由灯具访问来攻击这个问题。所以我创建了一些写入日志文件的诊断程序,告诉我何时进入和离开每个fitnesse夹具。如果日志文件上次报告“输入”,表示卡在代码库中;如果日志最后报告指向fitnesse的“离开”。诊断非常简单,需要手动检测每个夹具 - 观察下面骨架代码中的Diagnostic.EnterDiagnostic.Leave方法。 (Leave方法的参数让我看到异常的文本,如果发生的话。)

public class AddFoobarEntityFixture : ColumnFixture
{
    public bool Ok()
    {
        Diagnostic.Enter();
        string exitMessage = null;
        try
        {
            . . .
        }
        catch (Exception exc)
        {
            exitMessage = exc.Message;
            return false;
        }
        finally
        {
            Diagnostic.Leave(exitMessage);
        }
        return true;
    }
}

在对同一测试套件进行一系列试验后,我注意到了几个令人吃惊的观察结果:

  1. 从浏览器运行, fitnesse输出滞后于测试进度并且(在此锁定方案中)永远不会赶上。也就是说,在浏览器中,我看到从一个到十几个测试表执行的任何地方。另一方面,日志文件显示了大约35个相同执行的测试表。我怀疑这种滞后与锁定无关,因为网页在发生锁定之前很久就会停止更新,日志文件继续报告正在执行的测试表。

  2. 锁定发生在随机位置。下面的粗略条形图显示了几十个试验(每行一个),水平轴上有时间(或测试表的数量)。每个“X”代表一个处理过的测试表。

    1> XXXXXXXXXXXXXXXXXXXXXXX
     2 - ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     3 GT; XXXXXXXXXXXXXXXXXXXXXX
     4> XXXXXXXXXXXXXXXXXXXXXXX
     5个XXXXXXXXXXXXXXXXXXXXXXXX
     6个XXXXXXXXXXXXXXXXXXXXXXX
     7个XXXXXXXXXXXXXXXXXXXXXXX
     8是氢。 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     9个XXXXXXXXXXXXXXXXXXXXXXXX
     A> XXXXXXXXXXXXXXXXXXXXXXXX
     B个XXXXXXXXXXXXXXXXXXXXXXXX

  3. 毫无例外地,每个Enter都在日志中以Leave 进行平衡。这表明问题在于fitnesse而不是被测试的代码。然而,它确实依赖于两个重要的假设:首先,每个测试夹具都经过检测,其次,在每个检测的测试夹具中,只有简单的代码在Enter-Leave包围之外(例如返回声明仅返回本地值或具有简单或无初始化值的变量声明)。我还没有完全审查这两个假设,但我认为它们会证明没问题。

  4. 我曾希望fitnesse提供自己的日志记录,所以我可以看到,例如,继承了哪些SetUp或SuiteSetUp,何时处理包含,正在运行哪个测试表等等。但是,从我所看到的,然而,只有fitnesse的日志记录能力才能报告整个测试页面的粒度,这是不幸的。

    奇怪的是,我自己的网络搜索完全没有提到其他人遇到fitnesse这个问题,当然,强烈暗示问题在于我的代码库不知何故。

    任何有关隔离此问题的建议,无论是在fitnesse还是在我的代码库中,都表示赞赏!


    2010.07.15更新

    奇怪的是,我认为我解决了这个问题。通过将fitnesse使用的端口(我认为是)默认的8080更改为不太受欢迎的端口号,现在我可以毫无问题地运行测试套件或套件套件。我确实检查到我没有在端口8080上运行任何其他东西(使用TCPView)。所以任何人都有任何想法为什么会有所作为?

2 个答案:

答案 0 :(得分:0)

试试这个

http://www.asoftwarecraft.com/2010/01/troubleshooting-with-fitsharp-and.html

并查看是否发生了未处理的异常。

答案 1 :(得分:0)

我知道这是一个老问题,但我想我会为未来的观众添加这个。

我们在运行套件时遇到问题,结果证明是新安装的趋势科技防病毒软件(或者称之为“企业安全无忧版”)。

这个套件的一部分是“URL过滤”功能。

你有类似的跑步吗?