我正在尝试编写一个TestNG来测试属性的db更新。伪代码如下所示。
@Parameters({"newValue"})
@Test
public void testUpdateValue(@Optional String newValue)
{
String originalValue = getValueFromDataBase(); //get Original value
updateValue(newValue); //update property to newValue
String updatedValue = getValueFromDataBase(); //get updated value from db
Assert.assertEquals(updatedValue == newValue, true); //test value updated correctly.
updateValue(originalValue); // reset to origal value after test
}
我使用正确的方法来测试db更新吗? 还是testNG还有其他任何解决方案吗?
提前致谢。
答案 0 :(得分:0)
看起来有点不善于断言。
Assert.assertEquals(actual, expected);
对于assert equals,您需要提供db的实际值和您的预期值。如果两者相等,那么它将通过其他失败。
Assert.assertEquals(updatedValue, newValue);
谢谢你, 穆拉利
答案 1 :(得分:0)
我在这个测试中看到了3个问题:
正如murali所说,你应该Assert.assertEquals(updatedValue, newValue)
。这可确保您的断言错误有用。如果您执行Assert.assertEquals(updatedValue == newValue, true)
,那么您的消息将是" False不等于True"而不是"' Joe'不等于' Bob'"。
您的测试取决于getValueFromDatabase()
是否正常工作。如果getValueFromDatabase()
每次返回一个随机值,或相同的值,或附加某些内容,那么即使updateValue()
有效,此测试也会失败。
如果updateValue()
没有工作,那么您将使数据库处于脏状态。
要解决问题2和3,我建议模拟您的数据库。这需要什么: