c# – 如何对Task Parellelism进行单元测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何对Task Parellelism进行单元测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1673字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何对Task Parellelism进行单元测试](/upload/InfoBanner/zyjiaocheng/799/037c66c4c2374f6895990d3aabb06224.jpg)
我在.NET中有一个类,它创建并启动一个新的System.Threading.Tasks.Task,如下所示:
public class ScheduledTask
{
private IFoo _foo;
public ScheduledTask(IFoo foo)
{
_foo = foo;
}
public void Start()
{
_task = new Task(() => Run());
_task.Start();
}
public void Stop(TimeSpan timeout)
{
var taskCompletedNormally = _task.Wait(timeout);
if (taskCompletedNormally)
{
_task.Dispose();
_task = null;
}
}
private void Run(){ // Do some work}
}
如何在C#.Net中对ScheduledTask.Start和ScheduledTask.Stop方法进行单元测试?哪些是可用于此类单元测试的框架,哪些是单元测试线程(或任务并行)的最佳实践?
解决方法:
你的班级做得很多.启动/停止是一个通用函数,应该在它自己的类中.
public class StartStopTask
{
private readonly Action _action;
public StartStopTask(Action action)
{
_action = action;
}
public void Start()
{
_task = new Task(_action);
_task.Start();
}
...
}
这个类很容易进行单元测试.
bool worked = false;
var startstop = new StartStopTask(() => { worked = true });
startstop.Start();
startstop.Stop(new TimeSpan(0,0,0,10));
Assert.That(worked, Is.True);
然后,您的其他类使用StartStopTask来完成其工作.
要么得出
public class ScheduledTask : StartStopTask
{
private IFoo _foo;
public ScheduledTask(IFoo foo)
: base(() => Run())
{
_foo = foo;
}
private void Run(){ // Do some work }
}
或者只是委托工作
public class ScheduledTask
{
private IFoo _foo;
private readonly StartStopTask _startstop;
public ScheduledTask(IFoo foo)
{
_foo = foo;
_startstop = new StartStopTask(() => Run());
}
public void Start()
{
_startstop.Start();
}
public void Stop(TimeSpan timeout)
{
_startstop.Stop(timeout);
}
private void Run(){ // Do some work }
}
更好的方法是让Run成为一个公共方法,让调用者决定它应该如何运行.
内容总结
以上是互联网集市为您收集整理的c# – 如何对Task Parellelism进行单元测试全部内容,希望文章能够帮你解决c# – 如何对Task Parellelism进行单元测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。