В ваших методах NUnit Setup и TearDown вам нужно удалить и затем создать указанные таблицы (используя скрипт) в вашей базе данных.Поэтому до и после каждого из ваших тестов все ваши данные будут, конечно, удалены, оставляя для проверки только пустые таблицы.
В следующем примере используется база данных MySql, но даже для других баз данных код должен быть очень похожим:
public class DatabaseCleanup
{
private string _connectionString;
private MySqlConnection _mySqlConnection;
private string _filePath;
public DatabaseCleanup()
{
_filePath = @"C:\createdatabase.sql";
_connectionString = @"Server=localhost;Port=3306;Database=dbname;Uid=username;Password=password;";
_mySqlConnection = new MySqlConnection(_connectionString);
}
public void Create()
{
string script = File.ReadAllText(_filePath);
ExecuteScript(script);
}
private void ExecuteScript(string script)
{
try
{
MySqlCommand command = new MySqlCommand(script, _mySqlConnection);
_mySqlConnection.Open();
command.ExecuteNonQuery();
_mySqlConnection.Close();
}
catch (Exception exception)
{
throw;
}
finally
{
_mySqlConnection.Close();
}
}
}
Сценарий createdatabase.sql
, упомянутый в приведенном выше коде, является просто файлом sql.который содержит таблицу удаления и создания табличных операторов, которые вы можете предоставить в соответствии с вашей базой данных.Ниже приведен лишь пример:
DROP TABLE IF EXISTS `my_table`;
CREATE TABLE `my_table` (
`Id` varchar(50) NOT NULL,
`Name` varchar(50) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Затем вы можете использовать класс DatabaseCleanup в ваших тестовых классах NUnit для методов Setup и TearDown:
DatabaseCleanup databaseCleanup = new DatabaseCleanup();
databaseCleanup.Create();
Будьте осторожны, чтобы не запускать эту очистку базы данныхкод на производственных средах.Запускайте такие тесты только в среде разработки и тестирования.
PS Мне не нравятся люди, которые говорят здесь, использовать базы данных в памяти, такие как SqlLite.Это полностью противоречит цели тестирования интеграции.Это будет означать тестирование вашего кода с использованием другой базы данных в вашей среде разработки, а затем запуск и развертывание на другой платформе базы данных на рабочем сервере;а потом сталкиваюсь с кошмаром!