4

(当然我可以说这是“神秘的”,因为我无法确定问题所在。我希望你们中的一位博学的读者会明白这一点,并且你能启发我:-)

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

我在 Windows XP 上针对 .NET 3.5 代码库运行 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> XXXXXXXXXXXXXXXXXXXXXXXX
    2> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    3> XXXXXXXXXXXXXXXXXXXXXXXXX
    4> XXXXXXXXXXXXXXXXXXXXXXXXXXX
    5> XXXXXXXXXXXXXXXXXXXXXXXX
    6> XXXXXXXXXXXXXXXXXXXXXXXXXX
    7> XXXXXXXXXXXXXXXXXXXXXXXX
    8> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9
    > XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

我曾希望 Fitnesse 提供自己的日志记录,以便我可以看到,例如,继承了哪个 SetUp 或 SuiteSetUp、何时处理包含、正在运行哪个测试表等。然而,据我所知,唯一的日志记录功能的fitnesse 报告到整个测试页面的粒度,这是不幸的。

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

任何隔离此问题的建议,无论是在健身还是在我的代码库中,都非常感谢!


2010.07.15 更新

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

4

2 回答 2

1

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

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

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

你有类似的跑步吗?

于 2013-11-20T08:55:34.730 回答
0

尝试这个

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

看看是否有未处理的异常发生。

于 2010-07-12T20:10:28.347 回答