У меня есть метод (Play), который перехватывает ThreadInterruptException и вызывает в нем обработчик события. Это метод stati c в классе stati c.
Я хочу протестировать этот метод, отправив ему прерывание и посмотреть, получаю ли я обратный вызов по событию. Как я могу это сделать? Я попытался запустить код ниже, но функция обратного вызова не вызывает.
public static class HelperClass{
public static EventHandler<HelperEventArgs> EvActionEndedhandler;
public class HelperEventargs: EventArgs
{
public string ErrorMsg {get; set;}
public int Processed {get; set;}
}
public static void Play(object o)
{
try{
//some code that runs in a loop
}
catch(ThreadInterruptedException)
{
EvActionEndedhandler(2, new HelperEventArgs {processed = processed});
return;
}
}}
в моем тестовом проекте
Я использую визуальный студийный фреймворк для тестирования
[TestMethod()]
public void PlayPauseOnInterruptTest()
{
HelperClass.EvActionEndedHandler += (sender, args) =>
{
if ((int)sender == 2) paused = true;
};
}
var runningThread = new Thread(HelperClass.Play);
try
{
runningThread.Start();
if (runningThread.IsAlive)
runningThread.Interrupt();
while (runningThread.IsAlive)
{
if (paused)
{
Assert.IsTrue(paused);
return;
}
}
Assert.IsTrue(paused);
}
catch (Exception e)
{
}
}