Java junit在win32下测试具有shell脚本功能的类
我们有一个通过公开接口在类中使用的API。该API适用于UNIX系列,并假设每个UNIX都有/bin/sh。因此,在win32下运行junit测试时,我们得到: 无法运行程序“/bin/sh” 这是第二十二条军规还是有机会解决?除了junit之外,可能还存在一些可以在UNIX下轻松运行的框架。谢谢 更新: 代码是可移植的,可以在多个操作系统(java)上运行。 我想编写一些单元测试(这是我自己的倡议),部分代码作为API向我公开(在另一个部门进行测试)。现在,当我为自己的代码运行测试时,因为它依赖于API代码,所以它会执行一些神奇的操作,比如调用在virgin win32下不存在的shell脚本(我们使用win32+ssh进行开发) 切换到Linux目前不是一个选项。Java junit在win32下测试具有shell脚本功能的类,java,unix,junit,Java,Unix,Junit,我们有一个通过公开接口在类中使用的API。该API适用于UNIX系列,并假设每个UNIX都有/bin/sh。因此,在win32下运行junit测试时,我们得到: 无法运行程序“/bin/sh” 这是第二十二条军规还是有机会解决?除了junit之外,可能还存在一些可以在UNIX下轻松运行的框架。谢谢 更新: 代码是可移植的,可以在多个操作系统(java)上运行。 我想编写一些单元测试(这是我自己的倡议),部分代码作为API向我公开(在另一个部门进行测试)。现在,当我为自己的代码运行测试时,因为它依
不过,可以选择通过nx客户端将Eclipse安装到unix+gui上。希望能澄清一点。你的问题不清楚。显然,如果代码是针对Unix的,那么它将无法在Win32下工作,因此单元测试失败是自然的(也可以)。为什么要在Win32下测试Unix的代码 如果无法在Unix下进行测试(或将代码重写为独立于平台),则以下选项将是:
- 重构代码,使其不直接访问/bin/Sh;然后,您可以模拟依赖关系以获得真正的单元测试,它将是独立于平台的(请注意,严格来说,依赖于外部资源(如/bin/sh)的测试不是单元测试,而是集成测试)
- 在Win32上安装某种伪脚本来代替/bin/sh(并可能使路径可配置)
- 将junit测试列表拆分为依赖于平台的和独立于平台的测试,并仅在Win32下运行在那里工作的测试(其余在Unix上运行)
sh
在Windows上也可用
可能存在junit以外的框架,可以在UNIX下轻松运行。谢谢
嗯?也许我不明白,但我的理解是,您的代码有问题,而JUnit没有。如果我错了,请澄清您的期望。谢谢,操作列表看起来很可靠。要澄清,我没有任何win32平台特定的功能。请参阅更新。感谢cygwin选项。路径中的空脚本OTOH,业务逻辑可能需要运行适当的sh脚本(取决于我对单元测试的深入程度)顺便说一句,我的win32 pc上安装了cygwin,但是我如何通过Eclipse运行我的单元测试?难道我不应该在cygwin shell下运行它们吗?我不能做很多测试,因为我不在windows下,但如果我记得清楚的话,cygwin命令在windows shell(cmd)中可用,不是吗?在eclipse下会遇到什么问题?获取RCFILE时捕获到Pascal Thivent:IO异常:无法运行程序“/bin/sh”:CreateProcess error=3,系统找不到指定的路径dwell,我猜您必须在cygwin shell下运行它们。啊,如果我理解正确,对/bin/sh的调用不在您要进行单元测试的代码中,而是在您的代码调用的某些第三方API中。然后您可以模拟第三方API以避免这些问题。