草庐IT

final_test

全部标签

ruby - 如何为 ruby​​ 的 Test::Unit::TestCase 中的所有测试定义通用的设置和拆卸逻辑?

假设在setup或teardown中有潜在的昂贵操作要执行,这些操作对于所有测试都是相同的,并且其结果在测试运行期间不会被弄乱。在我看来,让它们在每次测试之前/之后运行是不对的。那么是否有一种首选方法可以仅在第一个测试执行之前和最后一个测试运行之后运行设置/拆卸代码?编辑:我正在处理的特定案例应该测试Net::FTP的一些扩展,从而建立FTP连接并设置一些远程对象以进行测试:classTestFTPExtensions 最佳答案 感谢安德鲁,我找到了这个hereonstackoverflow的答案.然而,在寻找答案的过程中,我还注意

ruby-on-rails - Ruby on Rails2.3.8 : Unit Testing: Rails/Ruby has setup to run before each test. 在所有测试之前运行的方法怎么样?

我想在每次运行测试时初始化数据库一次,而不是每次测试。我知道Rspec有before(:all),但我无法让它工作。我想知道Rails是否有类似的东西。 最佳答案 首先:在Test::Unit中曾经有一个before(:all)等价物,但它被删除了(不知道为什么)。其次:有很好的理由不做你想做的事——测试应该相互独立运行,而不是依赖于数据库中的状态。这样您就可以保证它完全测试您期望它测试的内容。如果您有一个更改数据库状态的测试,并且您移动它并且它在另一个期望它是另一种状态的测试之后运行-您会遇到问题。因此,所有测试必须是独立的。因此

c++ - 您如何使用 Boost.Test 指定应该预期的异常?

我有一个Boost单元测试用例,它会导致被测对象抛出异常(这就是测试,导致异常)。如何在测试中指定预期该特定异常。我可以通过使用BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES指定测试应该有一定数量的失败,但这似乎相当不具体。我希望能够在测试中的特定点说应该抛出异常并且不应将其视为失败。 最佳答案 这不行吗?BOOST_CHECK_THROW(expression,an_exception_type);如果表达式抛出给定的异常类型,这应该会导致测试通过,否则会失败。如果您需要与'CHECK'不同的严重性,

c++ - 您如何使用 Boost.Test 指定应该预期的异常?

我有一个Boost单元测试用例,它会导致被测对象抛出异常(这就是测试,导致异常)。如何在测试中指定预期该特定异常。我可以通过使用BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES指定测试应该有一定数量的失败,但这似乎相当不具体。我希望能够在测试中的特定点说应该抛出异常并且不应将其视为失败。 最佳答案 这不行吗?BOOST_CHECK_THROW(expression,an_exception_type);如果表达式抛出给定的异常类型,这应该会导致测试通过,否则会失败。如果您需要与'CHECK'不同的严重性,

ruby Test::Unit 命令行选项?

在Ruby的unit::test框架中运行测试时,是否有一种非常简单的方法可以从命令行指定只运行一个测试(即指定测试类和测试成员变量)?如果没有,是否有其他框架具有此功能? 最佳答案 ruby/path/to/foo_test.rb--nametest_should_do_something_really_spiffy这将调用该文件中方法test_should_do_something_really_spiffy定义的测试。编辑:这是为大多数ruby​​测试编写的Test::Unit框架准备的。我假设您的意思相同。

c++ - 使用 C++ lambda 正确实现 finally block

我想在我的C++程序中实现一个finallyblock,如果不是native工具,该语言当然有工具可以做到这一点。我想知道最好的方法是什么? 最佳答案 这个简单的实现似乎是100%安全的。templateclasssentry{to;public:sentry(tin_o):o(std::move(in_o)){}sentry(sentry&&)=delete;sentry(sentryconst&)=delete;~sentry()noexcept{static_assert(noexcept(o()),"Pleasecheckt

c++ - 使用 C++ lambda 正确实现 finally block

我想在我的C++程序中实现一个finallyblock,如果不是native工具,该语言当然有工具可以做到这一点。我想知道最好的方法是什么? 最佳答案 这个简单的实现似乎是100%安全的。templateclasssentry{to;public:sentry(tin_o):o(std::move(in_o)){}sentry(sentry&&)=delete;sentry(sentryconst&)=delete;~sentry()noexcept{static_assert(noexcept(o()),"Pleasecheckt

c++ - 在没有基类(非派生)的类中为虚函数添加 final 关键字是否有意义

我正在阅读一篇很棒的awesomeC++11tutorial并且作者在解释final关键字时提供了这个例子:structB{virtualvoidf()constfinal;//donotoverridevirtualvoidg();};structD:B{voidf()const;//error:D::fattemptstooverridefinalB::fvoidg();//OK};那么在这里使用final关键字有意义吗?在我看来,您可以避免在此处使用virtual关键字并防止f()被覆盖。 最佳答案 如果不将函数标记为virt

c++ - 在没有基类(非派生)的类中为虚函数添加 final 关键字是否有意义

我正在阅读一篇很棒的awesomeC++11tutorial并且作者在解释final关键字时提供了这个例子:structB{virtualvoidf()constfinal;//donotoverridevirtualvoidg();};structD:B{voidf()const;//error:D::fattemptstooverridefinalB::fvoidg();//OK};那么在这里使用final关键字有意义吗?在我看来,您可以避免在此处使用virtual关键字并防止f()被覆盖。 最佳答案 如果不将函数标记为virt

c++ - 编译器如何从 C++ 的新 final 关键字中受益?

C++11将允许将类和虚方法标记为final以禁止从它们派生或覆盖它们。classDriver{virtualvoidprint()const;};classKeyboardDriver:publicDriver{voidprint(int)constfinal;};classMouseDriverfinal:publicDriver{voidprint(int)const;};classDatafinal{intvalues_;};这非常有用,因为它告诉接口(interface)的读者一些关于使用这个类/方法的意图。用户在尝试覆盖时获得诊断可能也很有用。但是从编译器的角度来看有优势吗