gpt4 book ai didi

database - playframework: -- 数据库/测试框架/缓存错误

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:59 24 4
gpt4 key购买 nike

我已经将这个问题完全隔离到一个非常简单的 Play 应用程序中我认为这与某些数据库缓存有关,但我无法弄清楚

BasicTest.java 
==========
import org.junit.*;
import play.test.*;
import play.Logger;
import models.*;
import play.mvc.Http.*;
public class BasicTest extends FunctionalTest {
@Before public void setUp() {
Fixtures.deleteDatabase();
Fixtures.loadModels("data.yml");
Logger.debug("countFromSetup=%s",User.count());
}
@Test
public void test() {
Response response= GET("/");
Logger.debug("countFromTest=%s",User.count());
assertIsOk(response);
}
}

Uncommented Configs
================
%prod.application.mode=prod
%test.application.mode=dev
%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
%test.db=mysql:root:xxx@t_db
%test.jpa.ddl=create
%test.mail.smtp=mock
application.mode=dev
application.name=test
application.secret=jXKw4HabjhaNvosxgzq39to9BJECtOr39EXrEabsQAZKi7YoWAwQWo3B BFUOQnJw
attachments.path=data/attachments
date.format=yyyy-MM-dd
db=mysql:root:xxx@db
mail.smtp=mock
Application.java
============
package controllers;
import play.*;
import play.mvc.*;
import models.*;
public class Application extends Controller {
public static void index() {
Logger.debug("countFromIndex=%s",User.count());
render();
}
}
>play test

Output of log after running the BasicTest http://localhost:9000/@tests
==================================================
11:54:59,008 DEBUG ~ countFromSetup=1
11:54:59,021 DEBUG ~ countFromIndex=0
11:54:59,034 DEBUG ~ countFromTest=1
point to browser=> http://localhost:9000
12:25:59,781 DEBUG ~ countFromIndex=1

记录期间发生了什么? 响应 response= GET("/");这个“错误”几乎让我的测试用例变得毫无用处

最佳答案

这可能与交易有关。我在 Spring/JUnit couple 中遇到过类似的案例。

这是测试的事务执行(我认为):

  1. 开始交易 t1,
  2. 执行设置,结果从缓存中获取。
  3. 执行测试。
  4. 启动 Controller 执行 GET("/") 的事务 t2
  5. 结果已从数据库中获取,但由于 t1 尚未提交,因此未显示。
  6. 关闭事务 t2 并提交 t1!
  7. 关闭事务 t1 并提交 t2!

顺便说一下,这并不是真正的功能测试。对于功能测试,您不应该检查此类数据,而只能检查 http 状态。为此转向单元测试。查看功能测试的源代码时,您可以看到所有实现的检查都是针对响应/http 检查的。

关于database - playframework: -- 数据库/测试框架/缓存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com