سؤال

أبحث عن إطار اختبار يناسب متطلباتي. فيما يلي الخطوات التي أحتاج إلى القيام بها أثناء الاختبار الآلي:

  • الإعداد (هناك بعض ملفات الإدخال ، التي يجب قراءتها أو نسخها في بعض المجلدات المحددة.)
  • تنفيذ (قم بتشغيل القائمة بمفردها)
  • هدم (تنظيف لإحضار النظام في حالته القديمة)

بصرف النظر عن هذا ، أود أيضًا أن أحصل على بعض الذكاء للتأكد من تغيير ملف .cc ، يجب تشغيل جميع الاختبارات التي يمكنها التحقق من صحة التغييرات.

أقوم بتقييم Pyunit ، cppunit مع Scons لهذا. فكر في تشغيل هذا السؤال للتأكد من أنني في الاتجاه الصحيح. هل يمكنك اقتراح أي أدوات إطار اختبار أخرى؟ وما هي المتطلبات الأخرى التي يجب اعتبارها لتحديد إطار الاختبار الصحيح؟

هل كانت مفيدة؟

المحلول

بعد قراءة هذا المقال http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle منذ بعض الوقت ذهبت إلى Cxxtest.

بمجرد إعداد الشيء (تحتاج إلى تثبيت Python على سبيل المثال) ، من السهل جدًا كتابة الاختبارات (كنت جديدًا تمامًا على اختبارات الوحدة)

أستخدمه في العمل ، مدمج كمشروع Visual Studio في الحل. ينتج إخراجًا قابلًا للنقر عند فشل الاختبار ، ويتم إنشاء الاختبارات وتشغيلها في كل مرة أقوم فيها ببناء الحل.

نصائح أخرى

محاولة googletest الملقب ب GTest ليس أسوأ من ذلك أي إطار اختبار للوحدة ، ولكن يمكنه التغلب على بعض مع سهولة الاستخدام. ليست بالضبط أداة لاختبار التكامل الذي تبحث عنه ، ولكن يمكن تطبيقه بسهولة في معظم الحالات. هذه ويكيبيديا قد تكون الصفحة مفيدة لك أيضًا.

فيما يلي نسخة من عينة على صفحة مشروع GTEST:

#include <gtest/gtest.h>

namespace {

// The fixture for testing class Foo.
class FooTest : public ::testing::Test {
 protected:
  // You can remove any or all of the following functions if its body
  // is empty.

  FooTest() {
    // You can do set-up work for each test here.
  }

  virtual ~FooTest() {
    // You can do clean-up work that doesn't throw exceptions here.
  }

  // If the constructor and destructor are not enough for setting up
  // and cleaning up each test, you can define the following methods:

  virtual void SetUp() {
    // Code here will be called immediately after the constructor (right
    // before each test).
  }

  virtual void TearDown() {
    // Code here will be called immediately after each test (right
    // before the destructor).
  }

  // Objects declared here can be used by all tests in the test case for Foo.
};

// Tests that Foo does Xyz.
TEST_F(FooTest, DoesXyz) {
  // Exercises the Xyz feature of Foo.
}

يمكن أن تهتم Scons ببناء الخاص بك .cc عندما يتم تغييرها ، يمكن استخدام GTEST لإعداد الاختبارات الخاصة بك.

لا يمكنني إلا أن أضيف أننا نستخدم GTEST في بعض الحالات ، وإطار أتمتة الاختبار المخصص في المنزل في جميعها تقريبًا. غالبًا ما يكون هذا هو الحال مع هذه الأدوات التي قد يكون من الأسهل كتابة بنفسك بدلاً من محاولة ضبط وتعديل بعضها الآخر لمطابقة متطلباتك.

خيار واحد جيد IMO ، وهو شيء يتحرك إطار أتمتة الاختبار الخاص بنا ، ويستخدمه nosetests, إلى جانب مكتبة من الروتين الشائع (مثل خدمات البدء/الإيقاف ، احصل على حالة شيء ، تمكين/تعطيل التسجيل في مكونات معينة وما إلى ذلك). يمنحك هذا نظامًا مرنًا سهل الاستخدام أيضًا. ولأنه يستخدم Python وليس C ++ أو شيء من هذا القبيل ، يمكن أن يكون المزيد من الأشخاص مشغولين في إنشاء حالات اختبار ، بما في ذلك QEs ، والتي لا تحتاج بالضرورة إلى أن تكون قادرة على كتابة C ++.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top