我们目前在单元测试期间遇到一些问题.我们的类使用Rhino Mocks对Mocked对象进行多线程调用.这是一个减少到最小的例子:
public class Bar
{
private readonly List<IFoo> _fooList;
public Bar(List<IFoo> fooList)
{
_fooList = fooList;
}
public void Start()
{
var allTasks = new List<Task>();
foreach (var foo in _fooList)
allTasks.Add(Task.Factory.StartNew(() => foo.DoSomething()));
Task.WaitAll(allTasks.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
接口IFoo定义为:
public interface IFoo
{
void DoSomething();
event EventHandler myEvent;
}
Run Code Online (Sandbox Code Playgroud)
为了重现死锁,我们的unittest执行以下操作:1.创建一些IFoo Mocks 2.在调用DoSomething()时提升myEvent.
[TestMethod]
public void Foo_RaiseBar()
{
var fooList = GenerateFooList(50);
var target = new Bar(fooList);
target.Start();
}
private List<IFoo> GenerateFooList(int max)
{
var mocks = new MockRepository();
var fooList …Run Code Online (Sandbox Code Playgroud) 我只是想取消搁置几天前添加的货架.与此同时,其他人已经成功检查了shelveset中包含的新版本文件.由于我的文件在最新版本和shelveset之间存在冲突(因为它有另一个基本变更集),我想将我的代码库恢复为shelveset使用的这个特定版本.
我现在如何确定搁置集的哪个基本版本已被使用?不幸的是,在"细节"中没有关于此的信息 - 搁置的信息.