在maven的测试范围内从eclipse运行caliper

我在Eclipse中有一个Java项目,在我的src/test目录中有JUnit测试。 我还使用Caliper微基准测试为我的测试添加了一个类,我希望能够在Eclipse中运行这些测试。

由于Caliper代码是测试代码,我在test范围内添加了Caliper作为Maven的依赖项。 这使得它在我运行JUnit测试时显示在类路径中,但我看不到在类路径中运行具有测试依赖性的任意类的方法。 我尝试做的是为Java应用程序添加一个新的运行配置,以为我可以使用正确的类作为参数启动CaliperMain ,但Caliper jar不在类路径上,我看不到如何添加它。

我不想将我的基准代码和依赖项移动到main范围内,因为它是测试代码! 把它变成一个完全独立的项目似乎非常严重。

您应该可以使用Maven Exec插件执行此操作。 对于我的项目,我选择制作一个可以使用maven命令mvn compile -P benchmarks运行的基准测试配置文件。

要配置这样的内容,您可以在pom.xml添加以下内容,并使用标记将类路径的范围指定为test

   benchmarks    org.codehaus.mojo exec-maven-plugin 1.2.1   caliper compile  java   test com.google.caliper.runner.CaliperMain com.stackoverflow.BencharkClass,com.stackoverflow.AnotherBenchmark         

或者,如果您想为caliper指定许多选项,则可能更容易使用标记:

   caliper compile  java   test com.google.caliper.runner.CaliperMain  com.stackoverflow.BencharkClass --instrument runtime -Cinstrument.allocation.options.trackAllocations=false     

可以在此处找到更多配置选项(如上面的-Cinstrument.allocation.options.trackAllocations ),可以在此处找到更多运行时选项(如上面的--instrument )。

然后,如果您使用的是Eclipse m2 Maven插件,则可以右键单击项目文件夹并选择Run as... -> Maven Build...并在Goals输入框中输入类似clean install ,并在Profiles输入框并单击Run ,您应该在Eclipse控制台中看到输出。

重要的是要注意我使用了Caliper的本地快照构建,通过使用git clone https://code.google.com/p/caliper/检查源代码,在本文发布时为了利用它最新的API。

Interesting Posts