我正在尝试对一个函数进行单元测试,该函数会立即返回,然后通过回调函数返回实际结果。有没有人可以帮我用cppunit对这个函数进行单元测试。
例如。
MyFunction(回调){ .....
}
MyFunction立即返回成功,然后在回调函数中返回实际结果,从回调中抛出异常myexception如何进行单元测试以确保抛出myexception?
发布于 2012-11-02 17:59:25
让MyFunction立即返回的唯一方法是有一个工作线程,它最终调用回调函数。如果是这样,那么就不可能在代码中捕获从该工作线程抛出的异常。您必须捕获工作线程中的所有异常,并在那里处理它们。在异常处理程序中,您仍然可以使用指示异常已发生的参数来调用回调函数,从而通知用户。
发布于 2012-11-02 20:51:14
我将使用xUnit++,分两个阶段执行此操作:测试MyFunction和测试回调。
FACT("MyFunction returns immediately")
{
    struct callback
    {
        callback()
            : success(false)
        {
        }
        void operator()() const
        {
            if (!success)
            {
                Assert.Fail() << "MyFunction executed callback before returning.";
            }
        }
        bool success;
    } cb;
    MyFunction(cb);
    cb.success = true;
}
FACT("The real callback throws an exception when complete")
{
   auto e = Assert.Throws<MyException>(myCallback);
   // further asserts for the value of e
}https://stackoverflow.com/questions/13192665
复制相似问题