我想在play 2.3框架中使用fakeApplication尝试Java单元测试。我的代码是这样的:
import static org.fest.assertions.Assertions.assertThat;
import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.running;
import org.junit.Test;
import play.test.WithApplication;
public class ApplicationTest extends WithApplication {
@Test
public void simpleCheck() {
running(fakeApplication(), new Runnable() {
public void run() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
});
}
}
但是我收到以下错误:
[error] Test ApplicationTest.simpleCheck failed: java.lang.StackOverflowError: null, took 3.862 sec
[error] at java.lang.String.regionMatches(String.java:1326)
[error] at java.lang.String.equalsIgnoreCase(String.java:1090)
[error] at org.slf4j.impl.JDK14LoggerFactory.getLogger(JDK14LoggerFactory.java:55)
[error] at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
[error] at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:204)
[error] at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:291)
[error] at java.util.logging.Logger.log(Logger.java:610)
[error] at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:579)
.
.
.
[error] Failed: Total 1, Failed 1, Errors 0, Passed 0
[error] Failed tests:
[error] ApplicationTest
[error] (test:testOnly) sbt.TestsFailedException: Tests unsuccessful
当我不使用fakeApplication时,测试通过。
答案 0 :(得分:0)
如documentation中所述,WithApplication
“会自动确保为您启动和停止虚假应用程序”
因此,如果扩展WithApplication
,则无需在测试中开始新的测试。
试试这个:
public class ApplicationTest extends WithApplication {
@Test
public void simpleCheck() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
}
或者
public class ApplicationTest {
@Test
public void simpleCheck() {
running(fakeApplication(), new Runnable() {
public void run() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
});
}
}