这种来自另一个question的后续我的。
基本上,一旦我有了访问该文件的代码(稍后会查看那里的答案),测试它的最佳方法是什么?
我正在考虑创建一个只产生大量 BackgroundWorker 的方法的或其他东西,并告诉他们所有加载/保存文件,并使用不同的文件/对象大小进行测试。然后,从线程获取响应以查看它是否失败/成功/是否使世界崩溃等。
你们能就解决此问题的最佳方法提供任何建议吗?正如我之前所说,这对我来说有点新鲜:)
编辑
正在关注 ajmastrean's帖子:
我正在使用控制台应用程序通过 Debug.Asserts 进行测试 :)
更新
我最初使用 BackgroundWorker 滚动处理线程(因为我已经习惯了来自 Windows 开发人员的线程)我很快意识到,当我在执行测试时需要完成多个操作(线程)才能继续,我意识到这将是一个黑客攻击得到它来做到这一点。
然后我跟进了 ajmastrean的帖子并意识到我真的应该使用 Thread处理并发操作的类。我现在将使用这种方法进行重构(尽管是一种不同的方法)。
最佳答案
在 .NET 中,如果不设置 ManualResetEvent
或 AutoResetEvent
,ThreadPool
线程将不会返回。我发现这些对于快速测试方法来说有点矫枉过正(更不用说创建、设置和管理的复杂性了)。后台 worker 在回调等方面也有点复杂。
我发现的东西是
- 创建线程数组。
- 设置每个线程的
ThreadStart
方法。 - 启动每个线程。
- 加入所有线程(阻塞当前线程,直到所有其他线程完成或中止)
public static void MultiThreadedTest()
{
Thread[] threads = new Thread[count];
for (int i = 0; i < threads.Length; i++)
{
threads[i] = new Thread(DoSomeWork());
}
foreach(Thread thread in threads)
{
thread.Start();
}
foreach(Thread thread in threads)
{
thread.Join();
}
}
关于c# - 从多个线程进行单元测试的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568/