C# 单元测试后台线程
如何像这样测试后台线程 因为提取kinect传感器可能是一项非常耗时的任务。我创建了一个任务,调用Parallel来获取kinect传感器和mcu这两个东西。如果其中一个都完成了,UI将更改字符串,因为两个都可以先完成。这似乎真的很难测试,因为您无法创建新的kinectsensor,您可以从kinectsensor获取一个。KinectSensors,我尝试模拟延迟,以便检查字符串是否已更改C# 单元测试后台线程,c#,multithreading,unit-testing,background,C#,Multithreading,Unit Testing,Background,如何像这样测试后台线程 因为提取kinect传感器可能是一项非常耗时的任务。我创建了一个任务,调用Parallel来获取kinect传感器和mcu这两个东西。如果其中一个都完成了,UI将更改字符串,因为两个都可以先完成。这似乎真的很难测试,因为您无法创建新的kinectsensor,您可以从kinectsensor获取一个。KinectSensors,我尝试模拟延迟,以便检查字符串是否已更改 private void Initialize() { Task.Fac
private void Initialize()
{
Task.Factory.StartNew(() =>
{
Parallel.Invoke(() =>
{
KinectSensor kinectSensor = null;
// while haven't got the sensor, keep fetching
while (kinectSensor == null)
{
Thread.Sleep(200);
kinectSensor = (from sensor in KinectSensor.KinectSensors
where sensor.Status == KinectStatus.Connected
select sensor).FirstOrDefault();
}
_kinectService = new KinectService(kinectSensor);
_kinectService.SetupKinectSensor(new EventHandler<ColorImageFrameReadyEventArgs>(ColorImageFrameReadyEventHandler),
new EventHandler<SkeletonFrameReadyEventArgs>(SkeletonFrameReadyEventHandler));
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
StatusDescription = "Kinect Has connected";
});
}, () =>
{
IMCU mcu = null;
while (mcu == null)
{
Thread.Sleep(200);
// get mcu here
}
_mcuService = new MCUService(mcu);
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
StatusDescription = "MCU Has connected";
});
});
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
CameraShadowColor = "#FF66B034";
StatusColor = "#FF66B034";
StatusCaption = "Ready";
StatusDescription = "Ready to go";
ButtonString = "OK";
});
});
}
通常情况下,你不会像那样进行单元测试。这就是集成测试。@500 InternalServerError谢谢你的回答。我正在尝试在这个应用程序中实现TDD。如果您不需要测试这样的代码,这意味着将不会有用于此的单元测试代码,这将针对TDD编写测试并使用测试来帮助您完成代码。或者我只是做错了TDD?