使用TCP侦听器时,在C#中进行Parallell单元测试?

时间:2016-11-18 11:18:45

标签: c# .net unit-testing msbuild

所以我有两个测试类,两个都需要设置一个服务器监听TCP端口和一个或多个客户端连接。

现在确保他们使用空闲端口而不使用相同的端口(因为我们运行我们的测试并行)我使用了以下代码(从stackoverflow直接窃取):

        IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
        TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();

        foreach (TcpConnectionInformation tcpi in tcpConnInfoArray)
        {
            m_OccupiedPorts.Add(tcpi.LocalEndPoint.Port);
        }

        while (m_OccupiedPorts.Contains(m_Port))
        {
            m_Port++;
        }

假设没有其他应用程序在我获取信息和创建我的tcp-listener之间占用任何端口,在我看来,同一类中的2个测试可能最终会在同一个端口上?

我可以通过对类进行静态锁定来解决这个问题,但我不知道这是不是很好的代码实践?

第二个问题是,我完全单独的类进行相同的设置并使用相同的代码,我不确定两个类是否可以同时运行它们的代码,或者如果并行运行单元测试只在测试中执行同一个班级?

如果没有,有没有办法在两个不同的测试类之间保持相互锁定?

这两个类都是同一个程序集的一部分,如果这有任何区别的话。

希望我的问题不会令人困惑,任何帮助或指向一些资源的方向解释订单/上下文单元测试与MSBUILD运行将不胜感激

编辑:两个测试类都使用了一个帮助器类,我首先想到的是其他类来查询该类的端口,但是我非常不确定(静态字段)辅助类如何以及何时获得实例化到另外两个班级。

0 个答案:

没有答案