问题标签 [database-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
191 浏览

ruby-on-rails - Rails 数据库,为什么使用相同的 DBMS 进行开发和生产?

我似乎真的无法找到一个准确的解释来解释为什么你应该在开发中使用与生产中相同的数据库。我个人喜欢在开发中使用 sqlite3(它轻巧、易于使用,并且有一个很好的 sqlite 浏览器 GUI 工具),然后在生产中使用 postgres 和 heroku。但是,我不断听到 RBates 或 Michael Hartl 或其他人说您应该在两者中使用相同的数据库,为什么会这样呢?

0 投票
1 回答
483 浏览

unit-testing - 在 JUnit4 测试中访问 @Before 和 @After 中的对象的相同实例

我正在使用 JUnit 4 来测试数据库应用程序。由于每个测试在运行之前都需要对数据库进行特殊的预设,因此我使用的是@Before先加载数据的@After方法和从数据库中删除所有数据的方法。由于某些原因,我不能使用 DBUnit,但我必须使用一些自定义 Java 实现来完成数据库加载和清理工作。虽然我可以从方法中的这个自定义实现创建一个类的实例,但在@Before方法中获得相同的实例很重要@After

我的第一个想法是myObject在测试类中使用一个字段(例如, )并在@Before方法中设置它,这样我就可以在@After方法中再次使用它。但是,我不确定 JUnit 生命周期以及当测试并行运行时它将如何表现,即是否myObject会被覆盖。

另一个想法是使用一个 JUnit ,它在方法TestWatcher中创建该对象的一个​​实例starting并将它也保存在一个字段中。然后我@Rule在我的测试类中使用通过实现中的getter方法访问这个实例TestWatcher

所以我的问题基本上是:

@Before1)在方法中预设数据库并删除方法中的所有数据是一种好习惯@After吗?所以如果下一个测试只需要加载少量数据,它会运行得更快。

2)如何访问在@After方法中创建的方法中对象的同一实例@Before。即使测试并行运行,也必须保证它是同一个实例。我的两个想法中的任何一个都是实现它的好方法,哪个更好?

谢谢!

0 投票
0 回答
99 浏览

rest - NoSQL 数据库测试的必要性

我有一个使用 Couchbase Server 作为其后端数据库的 Web 服务器应用程序。应用程序由几组 REST API 组成。

现在我已经针对所有场景正确而深入地测试了我的所有 REST API,现在我处于两难境地,是否应该单独测试我的数据库。

因为我的 REST API 为我传递给他们的所有输入提供了正确的响应(来自 DB)。那么是否需要使用 sql 查询单独测试我的数据库,因为它与 API 所做的事情相同。

而且我没有考虑在我以后的范围内进行的性能测试。只考虑功能测试。

0 投票
1 回答
43 浏览

php - 在 ActiveRecord 模型/实体中什么值得测试?

我刚刚开始进行单元测试,当主题测试模型时,我有点困惑和不知所措。我目前有一些带有 setter 和 getter 的 ActiveRecord 模型。它们中的大多数只是简单地封装数据,只有少数带来了一些新的东西,例如返回 firstName 和 lastName 字段连接的 getFullName() 方法。

那么我应该测试什么?我应该测试每个属性分配还是只测试 getFullName() 之类的特殊方法?我应该去到什么程度?我什么时候应该测试类本身,什么时候应该实际测试数据库插入?实体中已经存在的验证怎么样,我应该考虑到这一点吗?

让我不知所措的是,对于一个有很多字段的实体,我似乎需要进行大量的测试。有办法解决吗?

示例将不胜感激!

0 投票
1 回答
702 浏览

php - 更改每个 PHPUnit 测试的数据集

我在 PHPUnit 测试中有点菜鸟,我需要涵盖一个方法的多个场景。该方法获取表的行并根据它做出决策,因此如果我有 0 行匹配我的查询,它将执行一些操作,否则,它将执行另一个操作。

我做了 DBUnit 的设置,一切都在运行,但是整个类都在运行相同的 getDataSet 方法,所以它运行相同的 MySQLXMLDump。

例如:

testScenarioA -> 空表。

testScenarioB -> 表有数据。

我需要为我的类上的每个测试函数加载一个foo XML。我怎样才能做到这一点?

0 投票
1 回答
140 浏览

php - PHPUnit 加载了太多的fixture

我有一些使用夹具的 PHPUnit 测试类。我定义了 10 个表固定装置。目录结构:

我现在有一个测试类 ( MyTestClass.php),我只想填充其中的 2 个表。我在那个类中有以下代码。

该函数TruncateDatabase是一个定制的辅助函数,它截断所有 10 个表。我已验证此功能有效。我运行测试并在die语句之后检查数据库。在其中,我看到了所有 10 个表,而不仅仅是我在fixtures. 为什么它会填充目录中定义的所有表fixtures?有没有办法绕过这个?

0 投票
1 回答
98 浏览

sql-server - CI / TFS 和 SQL Server 数据库测试:带有单元测试的架构验证

在 SQL Server 中执行架构验证的最佳做法是什么?

我需要测试视图、存储过程、函数触发器是否指向现有的工作表(或任何其他对象),并且需要对数据库中的所有对象执行此检查。我想避免人们引入损坏的代码并验证在生产中发布之前应该处于一致状态的整体模式。

我应该在单元测试中做吗?最好的方法是什么?

我正在使用 CI / TFS 和 Visual Studio 2015。

谢谢!

0 投票
2 回答
2430 浏览

java - JMockIt 模拟方法不模拟

[10/7/06 4:00 编辑的示例代码] 我正在尝试在不接触数据库的情况下测试一些代码(使用 JMockIt 和 TestNG),但看起来实际上仍然调用了一个模拟方法。这是简化的设置:

我想模拟插入操作以防止在实际数据库中插入,所以我尝试了这样的事情:

但似乎真实insert(Object)的仍在被调用。我指定类是模拟的,所以所有的实例都应该被模拟,对吧?而且我指定应该模拟插入方法,那么为什么要调用真正的方法呢?

上面还有第二个问题。当我在 Expectations 块内定义模拟类(如上)时,似乎只Row()调用了构造函数而不是Row(Object),因此对象未正确初始化。我通过将它移动到一个@BeforeTest方法中并在那里实例化类来解决这个问题。看起来是这样的:

所以这似乎得到了正确的构造函数被调用,但它似乎仍然insert()被调用。有什么见解吗?

0 投票
1 回答
1001 浏览

mysql - 如何使用 mysql-connector-java 将 jmeter 与数据库连接?

我正在使用 phpMyAdmin 版本 5.7.15 和数据库 mysql-connector-java 版本 5.1.40,但我无法使用 jmeter3.0 连接数据库。您能否提一些建议?

0 投票
1 回答
190 浏览

unit-testing - tsqlt 可以与并行数据仓库一起使用吗?

看到需要启用 CLR 功能才能使用 tsqlt。我可以在 PDW 中实际使用它吗?

或任何其他方式或工具来对 PDW 执行单元测试?

谢谢,