2012-05-13 31 views
8

Trong Boost.Test, làm cách nào tôi có thể lấy tên của trường hợp kiểm tra tự động hiện tại?Trong Boost.Test, làm thế nào để có được tên của thử nghiệm hiện tại?

Ví dụ:

#include <boost/test/unit_test.hpp> 
BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    std::cerr << "Starting " << test_name << std::endl; 
    // lots of code here 
    std::cerr << "Ending " << test_name << std::endl; 
} 

Trong ví dụ này, tôi muốn biến test_name để chứa "MyTest".

+1

Hãy xem [này] (https://groups.google.com/forum/?fromgroups=#!topic/boost-list/ZzFmu14UfeQ), cho đến nay nó hoạt động cho tôi –

Trả lời

17

Có chức năng * không có giấy tờ có thể được gọi cho mục đích đó. Dòng sau sẽ tuôn tên của thử nghiệm hiện tại để cerr:

#include <boost/test/framework.hpp> 

... 

std::cerr << boost::unit_test::framework::current_test_case().p_name 
      << std::endl; 

Lưu ý tuy nhiên rằng việc sử dụng API này không tuôn các thông số trong trường hợp thí nghiệm parametrized.

Bạn cũng có thể quan tâm trong test checkpoints ** (mà có vẻ là những gì bạn muốn làm.)

#include <boost/test/included/unit_test.hpp> 

... 

BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    BOOST_TEST_CHECKPOINT("Starting"); 
    // lots of code here 
    BOOST_TEST_CHECKPOINT("Ending"); 
} 

EDIT

* Chức năng current_test_case() hiện đang ghi nhận, xem the official Boost documentation .

** BOOST_TEST_CHECKPOINT trước đây được gọi là BOOST_CHECKPOINT. Xem Boost changelog (1.35.0).

+0

Tuy nhiên, tôi không sử dụng tên đó khi tôi sử dụng --run_test = , chỉ có thể chạy thử nghiệm của tôi bằng cách sử dụng ký tự đại diện, tôi không thể lấy tên kiểm tra chính xác, kỳ lạ !! – Antonio

+1

Đã giải quyết, tôi cũng phải chỉ định bộ thử nghiệm và thực hiện '--run_test = /'! – Antonio

+0

Tôi đã thêm một liên kết vào tài liệu + bao gồm bị thiếu. – BenC

Các vấn đề liên quan