Intellij idea 如何仅运行函数/单元测试
正如我们在游戏中已经知道的,每个测试(单元和功能)都位于测试文件夹中。我们如何标记我们的功能和单元测试,以便在一次运行中只运行功能测试,在另一次运行中只运行单元测试 我希望实现这一点,而不必为每种类型(意味着test/unit/…和test/functional/…)提供一个包。这个解决方案的问题是,假设您有一个app/auth文件夹(即一个auth包)。您的单元测试将位于包unit/auth中,并且无法看到任何包私有方法/字段/类 正确的方法是什么?Play期望我们如何实现这一目标Intellij idea 如何仅运行函数/单元测试,intellij-idea,playframework,sbt,Intellij Idea,Playframework,Sbt,正如我们在游戏中已经知道的,每个测试(单元和功能)都位于测试文件夹中。我们如何标记我们的功能和单元测试,以便在一次运行中只运行功能测试,在另一次运行中只运行单元测试 我希望实现这一点,而不必为每种类型(意味着test/unit/…和test/functional/…)提供一个包。这个解决方案的问题是,假设您有一个app/auth文件夹(即一个auth包)。您的单元测试将位于包unit/auth中,并且无法看到任何包私有方法/字段/类 正确的方法是什么?Play期望我们如何实现这一目标 依我看,最
依我看,最好的方法是有两个测试文件夹,一个用于单元,一个用于功能。但我担心这会破坏sbt测试和相关任务。游戏中的测试是基于sbt的 您可以使用测试过滤器配置
build.sbt
:
Test中的testOptions:=Seq(Tests.Filter(name=>name包含“IntegrationTest”))
这样,您就可以运行sbt custom:test
,它只运行通过TestsFilter
谓词的测试
lazy val CustomIntTest = config("custom") extend Test
lazy val root = (project in file(".")).enablePlugins(PlayScala)
.configs(CustomIntTest)
.settings(inConfig(CustomIntTest)(Defaults.testTasks):_*)
.settings(
testOptions in CustomIntTest := Seq(Tests.Filter(name => name.contains("Identifier")))
)
e、 g.
mycoolidentiiertest
将运行,但MyCoolTest
或mycoolidentiiertest
不会运行。有一件很酷的事情是,sbt test
仍然会运行所有测试,包括您的自定义过滤器这是我使用@tgk answer的最终build.sbt配置
lazy val AcceptanceTestConfig = config("acceptance") extend Test
lazy val UnitTestConfig = config("unit") extend Test
lazy val root = (project in file(".")).enablePlugins(PlayScala)
.configs(AcceptanceTestConfig)
.settings(inConfig(AcceptanceTestConfig)(Defaults.testTasks):_*)
.settings(
testOptions in AcceptanceTestConfig := Seq(Tests.Filter(name => name.contains("Acceptance")))
)
.configs(UnitTestConfig)
.settings(inConfig(UnitTestConfig)(Defaults.testTasks):_*)
.settings(
testOptions in UnitTestConfig := Seq(Tests.Filter(name => !name.contains("Acceptance")))
)
让我们运行
sbt验收:test
和sbt单元:test
这正是我想要的。谢谢