Boost.Test belgeleri ve örnekler gerçekten önemsiz olmayan örnekler içermiyor gibi görünüyor ve şimdiye kadar bulduğum iki öğretici İşte ve İşte yardımcı olurken hem oldukça basit.
Tüm proje için bir ana test paketine sahip olmak isterim, bağımsız olarak çalıştırılabilen ünite test ve modüllerinin modül takımları için bakım yaparken. Ayrıca çeşitli ağ kenarlarını test etmek için sahte bir sunucu kullanacağım.
Ubuntu 8.04'teyim, ama yine de kendi makefillerimi yazdığımdan herhangi bir örnek Linux veya Windows alacağım.
Düzenle
Bir test olarak aşağıdakileri yaptım:
// test1.cpp
#define BOOST_TEST_MODULE Regression
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(test1_suite)
BOOST_AUTO_TEST_CASE(Test1)
{
BOOST_CHECK(2 < 1);
}
BOOST_AUTO_TEST_SUITE_END()
// test2.cpp
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(test2_suite)
BOOST_AUTO_TEST_CASE(Test1)
{
BOOST_CHECK(1<2);
}
BOOST_AUTO_TEST_SUITE_END()
Sonra derledim: g++ test1.cpp test2.cpp -o tests
Bu bana bağlantı sırasında bir bazilyon "çoklu tanımı" hatalar hakkında verir.
Hepsi tek bir dosyada olduğunda iyi çalışıyor.
Boost.Test ile C ++ Birim Testi
Yukarıdaki parlak bir yazı ve gerçek Boost belgelerinden daha iyi.
Düzenle:
Ayrıca bir Perl yazısı yazdım.
makefile ve projeyi otomatik oluştur
sınıf isimleri listesinden iskelet,
"all-in-one" testi de dahil olmak üzere
suit ve tek başına test paketi
her sınıf. Denir
makeSimple ve indirilebilir
Sourceforge.net'ten.
Temel problemi bulduğum şey, testlerinizi birden fazla dosyaya bölmek istiyorsanız, önceden derlenmiş test çalışma zamanına karşı bağlantı kurmanız ve Boost.Test'in "yalnızca başlıkları" versiyonunu kullanmamanızdır. Eklemek zorundasın #define BOOST_TEST_DYN_LINK
Her bir dosyaya ve örneğin Boost başlıklarını eklerken <boost/test/unit_test.hpp>
yerine <boost/test/included/unit_test.hpp>
.
Yani tek bir test olarak derlemek için:
g++ test_main.cpp test1.cpp test2.cpp -lboost_unit_test_framework -o tests
veya bireysel bir testi derlemek için:
g++ test1.cpp -DSTAND_ALONE -lboost_unit_test_framework -o test1
.
// test_main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Main
#include <boost/test/unit_test.hpp>
// test1.cpp
#define BOOST_TEST_DYN_LINK
#ifdef STAND_ALONE
# define BOOST_TEST_MODULE Main
#endif
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(test1_suite)
BOOST_AUTO_TEST_CASE(Test1)
{
BOOST_CHECK(2<1);
}
BOOST_AUTO_TEST_SUITE_END()
// test2.cpp
#define BOOST_TEST_DYN_LINK
#ifdef STAND_ALONE
# define BOOST_TEST_MODULE Main
#endif
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(test2_suite)
BOOST_AUTO_TEST_CASE(Test1)
{
BOOST_CHECK(1<2);
}
BOOST_AUTO_TEST_SUITE_END()
Daha sonraki derste olandan başka neye ihtiyacın olduğunu bilmiyorum. İhtiyacım olan her şeyi sadece bu şekilde yaptım. Açıklamanızı da anladığımdan emin değilim.
İstediğiniz bir şey, test programınızda birden fazla .cpp dosyasına sahip olma yeteneğidir. Bu .cpp dosyalarından birinde yalnızca BOOST_TEST_MODULE tanımlaması kadar basittir. Tüm test programlarımızda, bunu tanımlayan ve ünite test başlığını içeren bir "driver.cpp" dosyası var. Tüm .cpp dosyalarının geri kalanı (modül veya konsept ile kapsam dahil) sadece ünite test başlığını içerir, bu değişkeni tanımlamazlar.
Her ikisini de birlikte derlemek ve ayrı ayrı derlemek isterseniz, BOOST_TEST_MODULE tanımlamak için kendi -D değişkeninizi kullanabilirsiniz.
Tek bir testte bir grup test programını yürütmek ve bir rapor almak için bir yol arıyorsanız, test yapmak için automake yöntemine veya daha iyisi CMake metoduna (CTest) bakabilirsiniz. Israr ederseniz, CTest'i kendi makefileğinizden de kullanabilirsiniz.
Sadece Boost ile başladığımda. Kaynak kodu ile aşağıdaki makaleyi test edin:
Test kurulumunu ve kullanımını artırın