我可以创建没有文件系统和网络访问权限的junit环境吗?我想对我们的测试用例实施更严格的规则。
理想情况下,这可以使用maven进行配置,并可用于默认测试阶段。
答案 0 :(得分:1)
根据这个答案https://stackoverflow.com/a/309427/116509,我认为您可以在测试设置上设置SecurityManager
并在拆解时恢复原始文件。
然而,恕我直言,应该允许一些单元测试触摸文件系统,例如,如果被测试的类实际上创建文件作为其合同的一部分。 (您可以使用依赖项注入来确保在临时目录中创建文件)。同样,对使用HTTP的类进行良好的单元测试应该针对HTTP端点进行测试。否则你最终会嘲笑一切,你的测试变得毫无价值。我想默认应该是拒绝访问,然后开发人员需要专门覆盖这种测试的权限。
答案 1 :(得分:0)
在文件系统/网络访问上处理这些依赖项的典型方法是在测试环境中模拟它们。这样,真实代码可以通过正常通道,但您的测试不必依赖于文件系统或网络。
查看模拟框架以帮助您完成大量工作。启用此类测试也可以使您的代码更清晰。 :)
答案 2 :(得分:0)
您可以使用Ashcroft禁止从测试中访问文件系统和其他资源。它使用Java安全管理器来限制对某些资源的访问。
另一种方法是使用AspectJ并实现几个禁止调用某些API或包的建议。
答案 3 :(得分:0)
我不确定您对JUnit环境的意思,但您不需要文件系统或网络访问来运行单元测试。另一方面,如果您正在测试使用网络和文件系统API的代码,则可能存在问题。在这种情况下,您可能需要将代码抽象为较小的可测试块。您不应该测试网络和文件系统API在单元测试中工作的天气,这些是集成测试。您应该只在单元测试中测试您的代码。