【发布时间】:2015-07-30 08:03:43
【问题描述】:
我使用单元测试已经有一段时间了。但是现在我需要编写集成测试。我应该将一些东西保存到数据库中,然后检查保存的数据是否正常。 我找不到简单干净的集成测试示例。 我的想法是这样做:
[Test]
public void IntegrationTestExample()
{
// Arrange without mocking
var objec1 = new objec1();
var objec2 = new objec2();
var startTestClass = new startTestClass(objec1, objec2);
var saveData = "test data";
//Act
startTestClass.SaveToDB(saveData);
// Assert
var valueFromDB = SelectSavedData();
Assert.AreEqual(saveData, valueFromDB);
}
//Get data from DB for assert
private string SelectSavedData()
{
var sqlQuery = "Select TOP 1 data from table1";
var data = RepositoryForTest.selectSavedData(sqlQuery);
return data;
}
但我不确定这是否是好方法? 你有什么建议吗?
【问题讨论】:
-
你不应该把它分成2个测试吗?一个用来保存数据,一个用来获取数据。您想测试保存方法是否有效。您还想测试检索方法是否有效?
-
@Jamie Rees 不,这里的检索方法只是为了获取断言数据。检查值是否保存到数据库。 Retrieve 方法仅用于集成测试目的。
-
我不认为这真的是一个集成测试。它看起来像是对您的数据层的简单测试。通常是集成测试,测试多个组件。
-
老实说,我不喜欢这种类型的测试。你的
SaveToDB不应该返回一些东西吗?例如一个布尔值 -
假设我在 SaveToDB 方法中有多个组件。我只是不想写复杂的例子。它是集成测试,因为它使用数据库。