我是Gradle的新手。我使用的是Gradle 1.10和Ubuntu 13。
我想知道是否有任何命令只执行一个单元测试类,类似于SBT中的testOnly。
我是Gradle的新手。我使用的是Gradle 1.10和Ubuntu 13。
我想知道是否有任何命令只执行一个单元测试类,类似于SBT中的testOnly。
当前回答
请注意——tests选项可能无法工作,如果你有不同的构建类型/口味(失败与未知命令行选项“——tests”)。在这种情况下,有必要指定特定的测试任务(例如testProdReleaseUnitTest而不是test)
其他回答
在Gradle 5之前的版本中,测试。单个系统属性可用于指定单个测试。
你可以用gradle -Dtest。single=ClassUnderTestTest test如果你想测试单个类或使用regexp如gradle -Dtest。single=ClassName*Test Test您可以在此链接下找到更多筛选测试类的示例。
Gradle 5删除了这个选项,因为它被使用——tests命令行选项的测试过滤所取代。
运行一个名为MyTest的测试:
./gradlew app:testDebug --tests=com.example.MyTest
在我的例子中,我的eclipse java编译器警告设置得太高,eclipse没有将我的类识别为可以执行的有效类。更新我的编译器设置解决了这个问题。你可以在这里阅读更多关于它的信息:annotation-nonnull-can - not-be-resolved
你应该试着在结尾加上星号。
Gradle测试-测试“com.a.b.c *”
如果你有一个多模块的项目:
假设您的模块结构是
root-module
-> a-module
-> b-module
并且您希望运行的测试(testToRun)位于b模块中,具有完整的路径:com.xyz.b.module.TestClass.testToRun
因为这里您感兴趣的是在b模块中运行测试,所以您应该看到b模块可用的任务。
./gradlew :b-module:tasks
上面的命令将列出b模块中的所有任务,并附有描述。 在理想情况下,您将有一个名为test的任务来运行该模块中的单元测试。
./gradlew :b-module:test
现在,您已经到达了在b模块中运行所有测试的位置,最后您可以将一个参数传递给上面的任务以运行与特定路径模式匹配的测试
./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun"
现在,如果你跑的话
./gradlew test——tests "com.xyz.b.module. testclass . testtorrun "
它将同时运行模块a和模块b的测试任务,这可能会导致失败,因为在模块a中没有匹配上述模式的内容。