junit在win32下测试具有shell脚本功能的类

时间:2009-12-07 15:42:42

标签: java unix junit

我们有一个API,它通过暴露的接口在类中使用。该API适用于UNIX系列,并假设每个UNIX都有/ bin / sh。因此,当在win32下运行junit测试时,我们得到:

无法运行程序“/ bin / sh”

它是一个捕获22的情况还是有机会解决它?也许存在一些除了junit之外的框架,可以在UNIX下轻松运行。感谢。

更新

代码是可移植的,可以在多个操作系统(java)上运行。 我想写一些单元测试(这是我自己的主动),部分代码作为apis(在另一个部门测试)暴露给我。现在,当我为自己的代码运行测试时,因为它依赖于apis代码,它会做一些魔术,比如调用shell脚本,这在原始win32下是不存在的(我们使用win32 + ssh进行开发)。

目前不能选择切换到Linux。 虽然通过nx客户端将Eclipse安装到unix + gui上是一个选择。希望它澄清一点。

2 个答案:

答案 0 :(得分:1)

你的问题不清楚。显然,如果代码是针对Unix的,它将无法在Win32下运行,因此单元测试失败是很自然的(也可以)。你为什么要测试Win32下的Unix代码?

如果您无法在Unix下进行测试(或将代码重写为与平台无关),则可以选择以下选项:

  • 重构代码,不直接访问/ bin / Sh;那么你可以模拟依赖关系以获得真正的单元测试,这将是平台无关的(请注意,严格来说,依赖于外部资源的测试,如/ bin / sh不是单元测试,而是集成测试)
  • 在Win32上安装某种虚拟脚本来代替/ bin / sh(并且可能使路径可配置
  • 将您的junit测试列表拆分为依赖于平台且独立的测试,并且仅在Win32下运行那些在那里工作的测试(其余的在Unix上)

但是你真的应该首先清楚你要如何测试特定于平台的功能。

答案 1 :(得分:0)

  

它是一个捕获22的情况还是有机会解决它?

如果可以的话,如果您的代码不是可移植的(我不会讨论这个),为什么要在Windows上构建它?也许您可以添加一个平台检查,以避免在Windows上运行时调用“Unix”API。或者也许您可以在Windows上安装cygwin以使sh可用。

  

也许除了junit之外的一些框架可以在UNIX下轻松运行。感谢。

咦?也许我没有得到它,但我的理解是你的你的代码有问题,而不是JUnit。如果我错了,请澄清你的期望。