免费创建自己的网站,福州医疗网站建设,网站推广话术与技巧,logoko在我以前的测试文章中#xff0c;我描述了如何使用TestContainers为数据库测试提供现实的测试环境。 此评论显示了缺点#xff1a; …如上所述#xff0c;似乎总是有一些缺点。 在这种情况下#xff0c;启动Docker映像及其包含的所有内容的开销将增加您的总体构建时间。 提… 在我以前的测试文章中我描述了如何使用TestContainers为数据库测试提供现实的测试环境。 此评论显示了缺点 …如上所述似乎总是有一些缺点。 在这种情况下启动Docker映像及其包含的所有内容的开销将增加您的总体构建时间。 提醒一下这是TestContainer特定的代码。 注意实例成员postgres 以及根据每个方法重新初始化它的JUnit Rule 。 package be.objectify.tcexample.db;import be.objectify.tcexample.AbstractUserDaoTest;
import be.objectify.tcexample.UserDao;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.testcontainers.containers.PostgreSQLContainer;
import play.db.Database;public class JooqUserDaoTest extends AbstractUserDaoTest implements DbTestSupport,TestData {Rulepublic PostgreSQLContainer postgres new PostgreSQLContainer();private Database database;Beforepublic void setup() throws Exception {// the database has all evolutions applieddatabase create(postgres); // load some test dataloadTestData(database); }Afterpublic void tearDown() {destroy(database);}Overridepublic UserDao dao() {return new JooqUserDao(database);}
} 鉴于测试持续时间的巨大增加是由Docker容器启动时间导致的因此我们可以改用JUnit ClassRule启动一个容器并将其重新用于类中的每个测试。 这意味着您不再应该并行运行这些测试但是性能提升将大大超过测试并行化。 package be.objectify.tcexample.db;import be.objectify.tcexample.AbstractUserDaoTest;
import be.objectify.tcexample.UserDao;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.testcontainers.containers.PostgreSQLContainer;
import play.db.Database;public class FasterJooqUserDaoTest extends AbstractUserDaoTest implements DbTestSupport,TestData {ClassRulepublic static PostgreSQLContainer postgres new PostgreSQLContainer();private Database database;Beforepublic void setup() throws Exception {database create(postgres); loadTestData(database); }Afterpublic void tearDown() {destroy(database);}Overridepublic UserDao dao() {return new JooqUserDao(database);}
} 节省的时间取决于类中测试方法的数量。 我有一些测试类每个类最多包含30个测试在这种情况下执行时间从几分钟缩短到几秒钟。 更改几行代码也不错。 翻译自: https://www.javacodegeeks.com/2017/05/boosting-test-performance-testcontainers.html