xlsunit 辅助junit,用于辅助基于 Spring、SpringBoot 企业信息系统单元测试,这种企业信息系统都会有大量的数据库操作,使用 xlsunit 来初始化测试前的数据库,以及使用 xlsunit 来比较业务调用后的数据库数据,能减少单元测试工作量,增强单元测试可维护性。
xlsunit 用 excel 来模拟数据库表数据,适合那种一次业务操作,多个表数据变化的应用系统。
XLSParser workflowParser = null; // @Autowrired WorkflowService workflowService; // @MockBean private ThirdPatyUserService userService; @Autowired protected SQLManager sqlManager; @Before public void init() { super.init(); //XLSUnit BeetlSql DBAccess dbAccess = new BeetlSqlDBAccess(sqlManager); // Excel XLSFileLoader loader = new XLSFileLoader("root"); // workflowParser = new XLSParser(loader, "user.xlsx", dbAccess, new RowHolderFacotoy.RowBeetlSQLHolderFactory()); } public void testUser1() { //执行某个测试场景的初始化工作,初始化user表 VariableTable vars = new VariableTable(); userParser.init(vars); //开始测试,从excel中获取userId和password userParser.prepare("场景1", vars); Integer id = (Integer) vars.find("id"); String newPassword = vars.findString("test.password"); //调用业务代码,修改用户密码 userSerivce2.modifyUserInfo(id, newPassword); //比较数据库里的数据跟场景1的数据是否一致 userParser.test("场景1", vars); }
可以将测试数据写在 excel 里,或者通过数据库客户端工具粘贴到 excel 里完成数据的输入。
可以用拥有任意多个 excel 文件,每个文件概念上都可以包含一个初始化数据的多种测试场景,excel 文件有三部分组成
第一个工作表,这个工作表用来介绍当前 excel 文件所测试的业务,以及包含一个目录,快捷指向每个场景测试
第二个表示 数据库初始化数据,可以包含多个表的初始化数据,也可以在初始化数据定义前,定义一些变量,这些变量可以用在初始化数据,JUnit 代码里,以及随后的场景测试里
第三个表以后的每个工作表都是场景测试表,对应了单元测试完毕后,期望的数据库的样子。通常用红色背景标注在表的列名上,这样表示只让 xlsunit 比较关心的列。同时,也能提醒阅读者,编写期望值
xlsunit 基于 Beetl ,完成 Excel 里计算表达式实现。
问题内容: 我希望在编写用于测试某些数据库条目的单元测试中获得一些建议。 如果找不到记录,则我正在测试的功能会将数据库作为种子。 我似乎不太了解如何进行len测试。我正在使用测试数据库,因此我可以在任何时候都对其进行核对,因此,如果我只需要在函数上强制使用一个空的数据库,就没有问题了。 该函数本身可以正常工作,我只想确保已覆盖该函数。 任何建议都很好。 谢谢! 问题答案: 确实取决于您,有很多方法
问题内容: 是否可以在不设置数据库的情况下编写Django单元测试?我想测试不需要设置数据库的业务逻辑。尽管设置数据库的速度很快,但在某些情况下我真的不需要它。 问题答案: 你可以继承DjangoTestSuiteRunner的子类,并覆盖setup_databases和teardown_databases方法以进行传递。 创建一个新的设置文件,并将TEST_RUNNER设置为刚创建的新类。然后,
问题内容: 测试UI很困难。您认为Swing的最佳单元测试框架是什么? 问题答案: 我认为目前最好的是FEST。
我需要将我的Heroku应用程序指向我的AWS RDS数据库。我的RDS数据库已经启动并运行,并且拥有一个具有0.0.0.0/0访问权限的安全组。 db实例:mydb dbname:mydb user:wcronyn pass:password 我试过了: heroku配置:set database_url=postgres://wcronyn:password@mydb.xxxxxx.us-ea
问题内容: 我长期使用面向行的数据库设计,除了数据仓库项目和大数据样本外,我没有为OLTP应用程序使用面向列的数据库设计。 我的面向行的表看起来像 我们团队中的某些人提倡面向列的数据库设计。他们建议所有列名称都应该是“属性”表中的属性名称。然后,另一个表Quote将具有两列PropertyName和PropertyValue。 在.net代码中,我们读取每个键并进行比较并将其转换为强类型对象。代码
由于一个人在单元测试和模拟之前没有经验,我使用Mockito学习了关于JUnit的初学者教程,并进行了一些实践。 现在,我需要对一些在MySQL数据库上执行基本数据库操作的类方法进行单元测试。我不想对数据库进行真正的更改。 在不访问真实数据库的情况下,是否存在验证类似方法的方法?还是我误解了单元测试和嘲笑的概念?
我曾想过简单地对数据库运行一个小命令并捕获任何异常,然而,如果出现问题(例如app.config丢失或数据库服务器关闭),应用程序将花费大量时间运行此代码,然后抛出异常(大约1分钟)。我想这是由于连接超时等,但我已经摆弄了这样的属性没有任何作用。 有没有人能提供任何关于去哪里的建议?