我正在尝试将PigUnit与Maven一起使用。在Maven中,我的猪脚本位于模块的根目录下<module>/src/main/pig/<scriptName>.pig
所有PigUnit测试教程要么编写pig脚本的绝对url(当构建运行时除了我的机器之外显然不起作用)或相对路径,它只是“神奇地”工作。但是当我直接输入脚本名称或者将src/main/pig/<scriptName>.pig
输入PigTest时,运行mvn test时找不到脚本。
用线测试(使用scala + scalatest):
val pigTest = new PigTest("src/main/pig/calcProductVectors.pig", args)
结果:
- Script does something *** FAILED ***
java.io.FileNotFoundException: src/main/pig/calcProductVectors.pig (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.apache.pig.pigunit.PigTest.readFile(PigTest.java:296)
at org.apache.pig.pigunit.PigTest.readFile(PigTest.java:292)
当运行mvn测试时,如何让src/main/pig
进入路径?
答案 0 :(得分:0)
好的,所以我在Java项目中发现了一些测试,只是将pig目录添加到maven中的project.build.testResources:
<testResources>
<testResource>
<!-- Pig is being included in test/resource so that we can access it with PigUnit -->
<directory>src/main/pig</directory>
<filtering>true</filtering>
</testResource>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
然后JUnit测试会将src/main/pig/<scriptName>.pig
传递给PigTest。
这在我的项目中没有起作用,不确定它是否因为使用了scalatest或其他内容。我可以看到目录的内容被复制到<module>/target/test-classes
,但他们仍然没有找到他们的直接名称(这似乎更有意义,因为他们被复制没有src / main /猪部分)或者为Java项目工作的整个路径。
最终从this answer,我发现测试在文件系统上的运行位置,它只是模块名称,所以我调整了路径,因此它起作用了:
val pigTest = new PigTest("<module>/src/main/pig/calcProductVectors.pig", args)