Ruby测试可以获取Rake执行它的文件夹的位置吗?我想使用Rake运行Test::Unit
单元测试,但我在Rake中定义的“测试套件”需要能够找到相对于项目根目录的库位置。
使用Maven,我可以像这样设置一个系统属性:
<properties>
<main.basedir>${project.basedir}</main.basedir>
</properties>
然后Java可以像这样引用它:
String baseDir = System.getProperty("main.basedir");
Ruby可以做类似的事吗?如果是这样,怎么样?我是否需要使用Rake namespace-require + include?没有酿造我自己的框架:只是尝试做最基本的测试设置。我确实创建了一些我的测试想要使用的lib文件。
这不起作用,因为它将基础目录硬编码到类文件中:
base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
答案 0 :(得分:0)
你可以通过将它注入测试帮助程序并获取相对于测试帮助程序所在文件位置的基本位置来实现这一点,但我想问你实际上想要实现什么目标?
通常测试可以访问lib路径,你应该只需要在测试中直接使用你想要的东西。你使用像rspec或test :: unit这样的东西吗?你在酿造自己的测试框架吗?
总的来说答案是肯定的,你可以做到,但你不应该这样做。可以告诉您一旦澄清了您正在使用的测试框架。
修改强>
对于测试单元,这几乎描述了您想要做的事情: https://github.com/test-unit/test-unit/blob/master/doc/text/how-to.md
run_test.rb帮助程序处于测试阶段。您可以看到如何使用文件路径(如上所述)以及如何将lib目录放在加载路径上来构建基础目录。