30 Ocak 2018 Salı

test

Giriş
Şu satırı dahil ederiz.
#include <boost/test/unit_test.hpp>
Bazen şu satı dahil ediliyor.
#include <boost/test/included/unit_test.hpp>
Kolay kullanım için şu isim alanı dahil edilir.
using namespace boost::unit_test;
Linklemek için şöyle yaparız. BOOST_TEST_DYN_LINK ile dll'i kullanmasını sağlarız.
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>
Seçenekler
Seçenekler test uygulamalarının çıktısını kontrol etmek için kullanılır. Uygulama çalışırken şu çıktıyı alırız.
Test command: ...
Environment variables:
 BOOST_TEST_AUTO_START_DBG=yes
 BOOST_TEST_BUILD_INFO=yes
 BOOST_TEST_CATCH_SYSTEM_ERRORS=yes
 BOOST_TEST_COLOR_OUTPUT=yes
 BOOST_TEST_DETECT_FP_EXCEPTIONS=yes
 BOOST_TEST_LOG_FORMAT=HRF
 BOOST_TEST_LOG_LEVEL=test_suite
 BOOST_TEST_LOG_SINK=stdout
 BOOST_TEST_RANDOM=1
 BOOST_TEST_REPORT_FORMAT=XML
 BOOST_TEST_REPORT_LEVEL=detailed
 BOOST_TEST_REPORT_SINK=...
 BOOST_TEST_RESULT_CODE=yes
...
list_content seçeneği
Şöyle yaparız
./App --list_content
test_suite_1*
    bare_test*
    enabled_test*
    disabled_test 
test_suite_2*
    bare_test*
    enabled_test*
    disabled_test 
logger seçeneği
Şöyle yaparız.
./App --logger=JUNIT,test_suite,output.xml
log_format seçeneği
Şöyle yaparız.
./App --log_level=test_suite --log_format=JUNIT --log_sink=output.xml
run_test seçeneği
Suite içindeki testi çalıştırmak için şöyle yaparız.
--run_test=mysuite/add_remove
master test suite Sınıfı
Constructor
Şöyle yaparız.
auto &ts = framework::master_test_suite();
add metodu
Şöyle yaparız.
ts.add (BOOST_TEST_CASE(...));
dataset Sınıfı
^ operator metodu
Açıklaması şöyle
A zip, denoted ^ , is an operation on two datasets dsa and dsb of same arity and same size, resulting in a dataset where the k-th sample of dsa is paired with the corresponding k-th sample of dsb. The resulting dataset samples order follows the left to right order against the symbol ^.
İki set'i birleştirir. Çıktı olarak şunu alırız.
dsa = (a_1, a_2, ... a_i)
dsb = (b_1, b_2, ... b_i)
dsa ^ dsb = ( (a_1, b_1), (a_2, b_2) ... (a_i, b_i) )

Örnek
Şöyle yaparız.
fibonacci_dataset() ^ bdata::make( { 1, 2, 3, 5, 8, 13, 21, 35, 56 } )
Örnek
Burada bir örnek daha var.
Macrolar
BOOST_TEST_MAIN Macrosu
Sanırım main metodunun tanımlanmasını sağlar. Emin değilim. Şöyle yaparız.
#define BOOST_TEST_MODULE hello
#define BOOST_TEST_MAIN
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE()
BOOST_AUTO_TEST_CASE(t1)
{
  BOOST_CHECK_EQUAL(...);
}
BOOST-AUTO_TEST_SUITE_END() 
BOOST_TEST_MODULE Macrosu
.cpp dosyasını başına ekleriz. Şöyle yaparız.
#define BOOST_TEST_MODULE MyTest
BOOST_TEST_NO_MAIN Macrosu
Normalde testlerde main metodu olmaz. Bu macro main metodu yazabilmemizi sağlar. Şöyle yaparız.
#define BOOST_TEST_MODULE custom_main
#define BOOST_TEST_NO_MAIN
#define BOOST_TEST_ALTERNATIVE_INIT_API
#include <boost/test/included/unit_test.hpp>
#include <iostream>

#include <unistd.h>
#include <signal.h>

void signalHandler(int sig)
{
  std::cerr << "Inside signal handler" << std::endl;
}

namespace utf = boost::unit_test;

BOOST_AUTO_TEST_CASE(test1)
{
  BOOST_TEST(false);
}

int main(int argc, char* argv[], char* envp[])
{
  signal(SIGINT, signalHandler);
  signal(SIGTERM, signalHandler);
  return utf::unit_test_main(init_unit_test, argc, argv);
}
BOOST_AUTO_TEST_CASE Macrosu
Test metodudur.
Örnek
Şöyle yaparız.
BOOST_AUTO_TEST_CASE(my_test1 )
{
  ...
}
Örnek
Testi komut satırından açmak için şöyle yaparız
BOOST_AUTO_TEST_CASE(enabled_test,* utf::enabled())
{
  ...
}
Testi komut satırından kapamak için şöyle yaparız
BOOST_AUTO_TEST_CASE(disabled_test,* utf::disabled())
{
  ...
}

BOOST_AUTO_TEST_SUITE Macrosu
Şöyle yaparız.
BOOST_AUTO_TEST_SUITE (MySuite)

BOOST_AUTO_TEST_CASE (mytest)
{
...
}

BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK Macrosu
Parametrenin true olduğunu kontrol eder.
Örnek
Şöyle yaparız.
BOOST_CHECK (foo.is_valid());
Örnek
Şöyle yaparız.
vector_set<int> vs;

BOOST_CHECK(vs.empty());
BOOST_CHECK_MESSAGE Macrosu
Parametre true ise mesaj basar. Şöyle yaparız.
float foo()
{
  return 1;
}

BOOST_AUTO_TEST_CASE( numbers )
{
  BOOST_CHECK_MESSAGE( foo() == 1 , "The Value is correct ");   
}
BOOST_CHECK_EQUAL Macrosu
Örnek
Şöyle yaparız.
BOOST_CHECK_EQUAL (foo1 == foo2);
Örnek
Şöyle yaparız.
vector<int> v = { 1,3,4,6,7,5,3 };

BOOST_CHECK_EQUAL(v.empty(), false);
BOOST_CHECK_THROW Macrosu
Şöyle yaparız. Metod çağrısının std::logic_error fırlatması beklenir.
BOOST_CHECK_THROW(myMethod, std::logic_error);
BOOST_FIXTURE_TEST_CASE Macrosu
Şöyle yaparız
BOOST_AUTO_TEST_SUITE(mysuite)

struct Fixture
{
  Fixture()
  {
    BOOST_TEST_MESSAGE("Setup");
  }

  ~Fixture()
  {
    BOOST_TEST_MESSAGE("Teardown");
  }
};

BOOST_FIXTURE_TEST_CASE(add_remove, Fixture)
{
}

BOOST_AUTO_TEST_SUITE_END()
Çalıştırmak için şöyle yaparız.
--run_test=mysuite/add_remove
BOOST_TEST Macrosu
Şöyle yaparız.
BOOST_TEST(true);

Hiç yorum yok:

Yorum Gönder