2010-06-23 18 views
14

CppUnit'i bir süredir kullanıyorum (ve bundan memnunum). Boost kütüphanesinin daha fazla parçasını kullandığımız için, boost.test'e kısa bir bakış atmıştım ve şimdi yeni bir projede ya da başka bir programa geçip geçemediğimi merak ediyorum.boost.test vs. CppUnit

Buradaki herhangi biri, iki framework ve boost.test'i kullanmanın yararları (varsa) arasındaki farklardan bahsedebilir mi?

+4

Muhtemelen http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks adresinin faydalı yanıtlarını bulabilirsiniz. –

+0

@Alex: Gönderiniz için teşekkürler, gerçekten faydalı bazı bağlantılar var. – chrmue

+0

İyi link, AAlex, +1. @chrmue, açıklığa kavuşturmak için - aradığınız karşılaştırmayı bir Boost kullanıcısı mı yoksa almalı mıyım? “Geliştirmek için Boost'u kullanırsam Boost metnini kullanmanın bir avantajı var mı?” Diye soruyor musunuz? ya da sadece basit bir karşılaştırma mı arıyorsunuz? – Mawg

cevap

17

Kendinize bir iyilik yapın ve CppUnit ve boost::unit_test'un tıkanık ve tekrarlı olmasını sağlayan Google Test adresine gidin. Örneğin

, basit bir fikstür var ki:

class MyFixture : public ::testing::Test 
{ 
    protected: 
    int foo; 

    virtual void SetUp() { foo = 0; } 
}; 

sizin fikstür için bir test eklemek için bunu yazmak!

TEST_F(MyFixture, FooStartsAtZero) { 
    EXPECT_EQ(0, foo); 
} 

Tek ihtiyacınız olan bu. Tüm testlerin isimlerini tekrarlayan, açık testsuit beyanlarının veya ayrı bir gündemin eksikliğine dikkat edin.

$ g++ -o utest utest.cpp -lgtest -lgtest_main

içinde olarak derlemek ve

Running main() from gtest_main.cc 
[==========] Running 1 test from 1 test case. 
[----------] Global test environment set-up. 
[----------] 1 test from MyFixture 
[ RUN  ] MyFixture.FooStartsAtZero 
[  OK ] MyFixture.FooStartsAtZero (0 ms) 
[----------] 1 test from MyFixture (0 ms total) 

[----------] Global test environment tear-down 
[==========] 1 test from 1 test case ran. (0 ms total) 
[ PASSED ] 1 test.

almak için testi (kendin testlerini geçmeyle ilgili güzel yeşil metni görmek için yürüt!)

Bu sadece başlangıç. Başka neler olabileceğini görmek için Google Test primer ve advanced guide'a bir göz atın. Bu daha az aksak Boost.Test alternatif daha ne kadar

+1

+1 Kendime aynı soruyu soruyordum ve bu cevap Google Test'e bakmamı istedi. Teşekkürler. – Mawg

+0

Bu yanıtı gönderdiğiniz için teşekkürler! Bu soruya gerçekten cevap vermiyor, ama henüz bilmediğim ve gerçekten umut verici görünen bir birim test çerçevesine işaret etti. İlk bakışta en çok sevdiğim şey, test durumlarının nasıl ifade edildiğidir: mümkün olan en kısa biçim! – chrmue

+0

@chrmue Bunu düşündüğünüz için teşekkür ederiz! Google Test'in gücü ve ifadesi ile çok heyecanlanacaksınız. –

41

: gerçekten biraz daha uzun

class MyFixture { MyFixture() { /* setup here */} }; 

BOOST_AUTO_TEST_CASE(my_test, MyFixture) 
{ 
    BOOST_CHECK_EQUAL(0, foo); 
} 

Makrolar, ancak bu daha güvenlidir ve C++ uygulama önerilir.

Google Test'i tercih etmem için tek bir teknik neden görmedim (ve Boost'u tercih etmeyi çok az biliyorum. Test). Gerisi sadece sizin tercihiniz.

+4

Boost'u kullanın.Test çok. "Boost.Test'i tercih etmek için çok az şey biliyorum" diye detaylandırır mısınız? –

+9

Ayrıca Boost.Test tercih neden merak ediyorum. Googletest üzerinde avantajları nelerdir? – Eloff

+3

Bu avantajlar nelerdir? – Etherealone