Я пытаюсь выполнить модульное тестирование, используя следующий метод модульного тестирования 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), потому что оно продолжает работать, но я хотел бы иметь возможность модульного тестирования.
Любые идеи? Заранее спасибо.