Я пытаюсь выполнить модульное тестирование, используя средство модульного тестирования VS следующим способом.
void Get(string name, Action<string> callBack);
вот тестер
[TestMethod]
public void Test()
{
Action<string> cb = name =>
{
Assert.IsNotNull(name);
};
var d = new MyClass();
d.Get("test", cb);
}
Единственная проблема заключается в том, что внутренняя реализация использует BackgroundWorker, поэтому обратный вызов вызывается в другом потоке. Вот внутренняя реализация.
public void Get(string name, Action<string> callBack)
{
callBackString = callBack;
GetData(name);
}
private void GetData(string name)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += bw_DoWork;
bw.RunWorkerCompleted += bw_RunWorkerCompleted;
bw.RunWorkerAsync(name);
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//do work here
if (null != callBackString)
callBackString("ok");
}
Конечно, поскольку Get () возвращается сразу, тест завершается успешно и тестирование останавливается, поэтому RunWorkerCompleted никогда не будет выполнен. Я легко могу проверить это с помощью обычного приложения (WPF), потому что оно продолжает работать, но мне бы хотелось иметь возможность модульного тестирования.
Есть идеи?
Заранее спасибо.