11

我有 4 个测试类,每个测试类平均有两个测试功能。第一个测试如下,必须正确(来自 Play 的教程)。

public class ApplicationTest {

    @Test 
    public void simpleCheck() {
        int a = 1 + 1;
        assertThat(a).isEqualTo(2);
    }

}

其他的是定制的,并且有一个@Before设置,如下所示:

public class UserTest extends WithApplication {

@Before
public void setUp() {
    start(fakeApplication(inMemoryDatabase()));
}

// creation and retrieval of user
@Test
public void createAndRetrieveUser() {
    new User("bob@gmail.com", "Bob", "secret").save();

    User bob = User.find.where().eq("email", "bob@gmail.com").findUnique();

    assertNotNull(bob);                 // successfully retrieved
    assertEquals("Bob", bob.getName()); // correct user retrieved
}
}

现在,当我运行play test它时,它完成得更快,并且不执行任何测试。

PS C:\wamp\www\dcid> play test
[info] Loading project definition from C:\wamp\www\dcid\project
[info] Set current project to dcid (in build file:/C:/wamp/www/dcid/)
[info] Compiling 4 Java sources to C:\wamp\www\dcid\target\scala-2.10\test-classes...
[info] ApplicationTest
[info]
[info]
[info] Total for test ApplicationTest
[info] Finished in 0.014 seconds
[info] 0 tests, 0 failures, 0 errors
[info] models.UserTest
[info]
[info]
[info] Total for test models.UserTest
[info] Finished in 0.002 seconds
[info] 0 tests, 0 failures, 0 errors
[info] models.ProposalTest
[info]
[info]
[info] Total for test models.ProposalTest
[info] Finished in 0.002 seconds
[info] 0 tests, 0 failures, 0 errors
[info] Passed: : Total 0, Failed 0, Errors 0, Passed 0, Skipped 0
[success] Total time: 5 s, completed 16/Ago/2013 14:52:35

为什么是这样?我能做些什么? 我最近从 play 2.1.2 更新到 2.1.3。我更新了所有参考资料,项目运行良好,除了测试。我也看过这个问题,但不可能是这样,因为我没有更改我的测试,所以它们写得很好,只是它们的执行不起作用。

4

1 回答 1

14

是 Play 2.1.3 的一个已知问题。同时有一个解决方法。在 val main 函数的 Build.scala 文件中添加以下内容:

val main = play.Project(appName, appVersion, appDependencies).settings(
  // Add your own project settings here      
  testOptions in Test ~= { args =>
    for {
      arg <- args
      val ta: Tests.Argument = arg.asInstanceOf[Tests.Argument]
      val newArg = if(ta.framework == Some(TestFrameworks.JUnit)) ta.copy(args = List.empty[String]) else ta
    } yield newArg
  }
)   
于 2013-08-16T16:30:07.453 回答