c# - 创建新线程的测试方法和我们从事件中获得的结果(NUnit 2.6)

标签 c# unit-testing nunit

我的类有一个公共(public)方法 Start、一个私有(private)方法和一个事件 Finishing开始调用new Thread(private_method)。使用事件的私有(private)方法返回值。当这个方法完成他们的工作时,再调用这个事件。

现在我想给这个类写测试。如果我这样写:

    [Test]
    public void Test1()
    {
        SomeClass someObject = new SomeClass();

        someObject.Finishing += new SomeClass.FinishingEventHandler((sender, a) =>
        {
            Assert.True(false);
        });
        someObject.Start(); // when this method will finish, then call event Finishing
    }

它应该是失败的,但它不是。我认为方法 Test1 在引发事件之前已完成。那么,我该如何测试这段代码呢?如何测试创建新线程的方法以及我们从事件中获得的结果

最佳答案

NUnit 具有等待断言的内置功能。它被称为“之后”:

[Test]
public void ShouldRaiseFinishedEvent()
{
    SomeClass someObject = new SomeClass();
    bool eventRaised = false;
    someObject.SomethingFinished += (o, e) => { eventRaised = true; };

    someObject.DoSomething();
    Assert.That(eventRaised, Is.True.After(500));
}

关于c# - 创建新线程的测试方法和我们从事件中获得的结果(NUnit 2.6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831514/

相关文章:

ruby-on-rails - 如何确保我正在测试所有内容,我拥有所有功能并且只有旧代码的那些功能?

c# - 使用目录测试失败

.net - 为什么 NUnit 需要旧版本的框架?

c# - 如何从 WCF asmx C# 获取客户端的计算机名称?

c# - 替换字符串中的反斜杠

c# - RhinoMocks 中的 Moq 相当于 LastCall 的是什么?

java - 使用 WindowFinder 查找模态对话框

c# - 如何在 C# Asp.net 中注销 Page.ClientScript

c# - 维护 asp.net 页面的状态

nunit - 运行长时间运行的 NUnit/xUnit 测试,这样它们就不会阻塞其他测试