我们创建了一个测试套件,为了运行它,我们使用了带有 JerseyTest 框架的嵌入式 Grizzly Web 服务器。
我们从 JerseyTest 扩展了一个自定义类,在它的构造函数中我们创建了 ApplicationDescriptor,然后调用超类 setupTestEnvironment(),它基本上启动了嵌入式 grizzly Web 服务器。
我们很少有测试用例扩展这个自定义类来直接启动 grizzly 服务器。但是,我们不会在代码中的任何地方停止这个嵌入式服务器。
测试用例在 Windows 上运行良好,但在 Unix 上失败,java.net.BindException 端口 9998 正在被另一个进程使用。
很明显,如果我们没有在代码中停止嵌入式 Web 服务器,这些测试也会在 Windows 上失败并出现类似的错误。它们如何在 Windows 上运行良好而在 unix 上失败。这与 Unix 如何产生线程或进程有关吗?
PS 我们还使用 netstat -a | 测试了端口 9998 是否被其他进程使用。grep 9998 但找不到使用该端口的其他进程。