Почему бы не сделать член БД защищенным, а в вашем тестовом проекте наследовать его и переопределить этот член:
project
{
Class A
{
protected static db = ...
public void Save(...) { ... }
}
}
test_project
{
Class B : A
{
protected override static db = ... (create test db)
}
Class testB
{
public A a;
public void Setup()
{
this.a = new B();
}
public void TearDown()
{
// delete a
}
public void TestSaveKey()
{
// test a
}
}
}
Он все еще скрыт от потребителей кода / библиотеки, тестовый объект не загромождаетсярабочий код и его поведение будут протестированы так, как если бы это была рабочая версия.
Однако следует помнить, что наличие статического члена для вашего объекта базы данных может вызвать проблемы в ваших тестах, если он не очищается должным образом после каждоготест. *
- Я знаю, что вы, вероятно, уже знаете это, но я говорю это для полноты.