ভিজ্যুয়াল স্টুডিও সি ++ এর জন্য কীভাবে ইউনিট পরীক্ষার সেট আপ করবেন


94

বিল্ট-ইন ইউনিট টেস্টিং স্যুটটি সম্ভবত অনুমান করার জন্য ভিজ্যুয়াল স্টুডিও ২০০৮C++ -এ কীভাবে পরীক্ষামূলক কাঠামো সেট আপ করতে এবং ব্যবহারযোগ্য হবে তা জানার জন্য আমার সমস্যা হচ্ছে ।

যে কোনও লিঙ্ক বা টিউটোরিয়াল প্রশংসা করা হবে।


গুগল সি ++ টেস্ট ফ্রেমওয়ার্ক প্রকাশ করে যা এক্স ইউনাইট ফ্রেমওয়ার্কগুলির সাথে খুব মিল। http://code.google.com/p/googletest/
পপোপোম

আপনি কোন কাঠামোটি ব্যবহার করে শেষ করেছেন?
জোয়াকিম কার্লসন

আসলে আমি এখনও তাদের কোনও ব্যবহার করি নি। আমি সিদ্ধান্ত নিয়েছি যে আমি ইউনিট পরীক্ষায় যা কাজ করছিলাম তা সময়ের সর্বাধিক কার্যকর ব্যবহার নয়।
ডিএসহুক

উত্তর:


56

এই পৃষ্ঠাটি সাহায্য করতে পারে, এটি বেশ কয়েকটি সি ++ ইউনিট পরীক্ষার ফ্রেমওয়ার্কগুলি পর্যালোচনা করে:

  • সিপিপিউনিত
  • বুস্ট.টেষ্ট
  • সিপিপিউনিটলাইট
  • NanoCppUnit
  • ইউনিট ++
  • সিএক্সএক্স টেস্ট

সিপিপিউনাইটলাইট বা সিপিপিউনিটলাইট 2 পরীক্ষা করে দেখুন ।

সিপিপিউনাইটলাইটটি মাইকেল ফেদারস দ্বারা তৈরি করা হয়েছিল, যিনি মূলত জাভা জুনিটকে সি ++ তে সিপিপিউনিট হিসাবে পোর্ট করেছিলেন (সিপিপিউনিট জাওনিতের বিকাশের মডেলের নকল করার চেষ্টা করে - তবে সি ++ জাভাটির বৈশিষ্ট্যগুলির অভাব [উদাহরণস্বরূপ] এটি ব্যবহার করা সহজ করার জন্য)।

সিপিপিউনাইটলাইট জাভা সি সি ++ এ পোর্ট করে নয়, একটি সত্যিকারের সি ++ - স্টাইল পরীক্ষার কাঠামো তৈরি করার চেষ্টা করে। (আমি লেগ্যাসি কোড বইয়ের সাথে ফেদারের কার্যকারিতা থেকে প্যারাফ্রেসিং করছি )। আরও বৈশিষ্ট্য এবং বাগ ফিক্স সহ সিপিপিউনাইটলাইট 2 অন্য রাইটরাইট বলে মনে হচ্ছে।

আমি স্রেফ ইউনিট টেস্ট ++ জুড়ে হোঁচট খেয়েছি যার মধ্যে সিপিপিউনিটলাইট 2 এবং অন্যান্য কিছু কাঠামোর স্টাফ রয়েছে।

মাইক্রোসফ্ট উইনউনিতকে মুক্তি দিয়েছে

চেকআউট ক্যাচ বা ডক্টেস্টও


4
গুগলতেস্ট :: টেস্ট বাড়ানোর মতোই তবে ভিএস-তে সংহত করা কিছুটা সহজ
মার্টিন বেকেট

4
আমি অবাক হয়েছি এখানে ক্যাচের উল্লেখ নেই। এছাড়াও চেকআউট ডক্টেস্ট - সংকলনের গতিতে প্রচুর ফোকাস সহ আমার ক্যাচটির পুনরায় বাস্তবায়ন
দুজনের

4
@ অনক্টাম খুব অবাক হবেন না, এই প্রশ্ন / উত্তরটি ছিল ২০০৮ সালের! যোগ করা হয়েছে আপনি লিঙ্ক প্রস্তাব।
আর্দভার্ক

24

ভিজ্যুয়াল স্টুডিও ২০০৮ এর মধ্যে বিল্ট ইন টেস্টিং ফ্রেমওয়ার্কটি ব্যবহার করে নিয়ন্ত্রণহীন সি ++ পরীক্ষা করার একটি উপায় রয়েছে । আপনি যদি সি ++ / সিএলআই ব্যবহার করে কোনও সি ++ টেস্ট প্রকল্প তৈরি করেন তবে আপনি একটি পরিচালনা না করা ডিএলএলে কল করতে পারেন। আপনাকে কমন ল্যাঙ্গুয়েজ রানটাইম সমর্থনটি সাফ / ক্লার থেকে / ক্লার এ স্যুইচ করতে হবে: আপনি যদি পরিচালনা না করা সি ++ তে লেখা কোডটি পরীক্ষা করতে চান তবে নিরাপদ।

আমার ব্লগে এখানে ধাপে ধাপে বিশদ রয়েছে: http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/


4
এটি আপনার সি ++ কোডের উপর নির্দিষ্ট সীমাবদ্ধতা রাখে, আমি কমপক্ষে একটি কোড বেস পেয়েছি যেখানে এর শিরোনামগুলিকে সি ++ / সিএলআই কোডের অন্তর্ভুক্ত করার চেষ্টা করা তার মূল্য অপেক্ষা আরও বেশি সমস্যা ছিল। সি ++ / সিএলআই ব্যবহার করার জন্য আমার বড় সুবিধা হ'ল আপনি এমবিউনিট / নুনিট / এক্সউনিট.নেটে রাউস্টেস্টের মতো বৈশিষ্ট্যগুলির সাথে ফানি প্যারামিটারাইজড টেস্টিং ব্যবহার করতে পারেন
অ্যান্ডি ডেন্ট

9

মাইক্রোসফ্টে আইআইএস ইউআরএল পুনর্লিখনের মডিউলটি পরীক্ষা করতে আমি যে পদ্ধতির ব্যবহার করছি তা এখানে রয়েছে (এটি কমান্ড-লাইন ভিত্তিক, তবে ভিএস-এর পক্ষেও কাজ করা উচিত):

  1. আপনার হেডার ফাইলগুলি সিপিপি ফাইলগুলিতে উত্স কোডটি সরিয়ে এবং প্রয়োজনে ফরোয়ার্ড ডিক্লোরেশন ব্যবহার করে গ্রাসযোগ্য।
  2. লাইব্রেরি (.lib) হিসাবে পরীক্ষার জন্য আপনার কোডটি সঙ্কলন করুন
  3. সিএলআর সহায়তায় আপনার ইউনিটটেষ্ট প্রকল্পটি সি ++ হিসাবে তৈরি করুন।
  4. আপনার হেডার ফাইলগুলি অন্তর্ভুক্ত করুন।
  5. আপনার .lib ফাইলগুলি অন্তর্ভুক্ত করুন।
  6. মাইক্রোসফ্টে একটি রেফারেন্স যুক্ত করুন isভিজুয়ালস্টুডিও Qকুয়েলটিসুলস.উনিটটেষ্টফ্রেমওয়ার্ক.ডিল
  7. আপনার ইউনিট পরীক্ষা ঘোষণার জন্য সত্যিই একটি ছোট্ট ক্লাস ব্যবহার করুন এবং পরিচালিত থেকে সি ++ / নেটিভ কোডের মতো ঝাঁপুনো (টাইপস থাকতে পারে):

এখানে একটি উদাহরণ:

// Example
#include "stdafx.h"
#include "mstest.h"

// Following code is native code.
#pragma unmanaged
void AddTwoNumbersTest() {
  // Arrange
  Adder yourNativeObject;
  int expected = 3;
  int actual;
  // Act
  actual = yourNativeObject.Add(1, 2);
  // Assert
  Assert::AreEqual(expected, actual, L"1 + 2 != 3");
}

// Following code is C++/CLI (Managed)
#pragma managed
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
[TestClass]
public ref class TestShim {
public:
  [TestMethod]
  void AddTwoNumbersTest() {
     // Just jump to C++ native code (above)
     ::AddTwoNumbersTest();
  }
};

এই পদ্ধতির সাথে, লোকেরা খুব বেশি সি ++ / সিএলআই স্টাফ শিখতে হবে না, সমস্ত আসল পরীক্ষা সি ++ নেটিভ এ করা হবে এবং টেস্টশিম ক্লাসটি এমএসটিস্ট.এক্সে পরীক্ষা 'প্রকাশ' করতে ব্যবহৃত হবে (বা এটি দৃশ্যমান করে তুলবে) )।

নতুন পরীক্ষা যুক্ত করার জন্য আপনি কেবলমাত্র একটি নতুন [টেস্টমেথড] অকার্যকর নিউ টেস্ট () {:: নিউ টেস্ট ();} পদ্ধতি এবং একটি নতুন অকার্যকর নিউ টেস্ট () নেটিভ ফাংশন ঘোষণা করুন। কোনও ম্যাক্রোস নেই, কোন কৌশল নয়, সোজা for

এখন, হেড ফাইলটি বৈকল্পিকভাবে ব্যবহৃত হয়েছে, তবে এটি সি ++ নেটিভ স্বাক্ষর (উদাহরণস্বরূপ স্ট্র্যাং instead এর পরিবর্তে wchar_t *) সহ অ্যাসেট ক্লাসের পদ্ধতিগুলি প্রকাশ করতে ব্যবহার করা যেতে পারে, সুতরাং এটি আপনি সি ++ এবং সি ++ / সিএলআই থেকে দূরে রাখতে পারেন :

এখানে একটি উদাহরণ:

// Example
#pragma once
#pragma managed(push, on)
using namespace System;
class Assert {
public:
    static void AreEqual(int expected, int actual) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual);
    }

    static void AreEqual(int expected, int actual, PCWSTR pszMessage) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual, gcnew String(pszMe
ssage));
    }

    template<typename T>
    static void AreEqual(T expected, T actual) {
        Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual(expected, actual);
    }

    // Etcetera, other overloads...
}
#pragma managed(pop)

এইচটিএইচ


6

ব্যক্তিগতভাবে, আমি উইনউনিতকে পছন্দ করি যেহেতু এটি আমার পরীক্ষাগুলি ব্যতীত আমার আর কিছু লেখার প্রয়োজন হয় না (আমি পরীক্ষা হিসাবে একটি .dll তৈরি করি, একটি এক্সাই নয়)। আমি কেবল একটি প্রকল্প তৈরি করি, এবং WinUnit.exe কে আমার পরীক্ষার আউটপুট ডিরেক্টরিতে দেখি এবং এটি যা কিছু আবিষ্কার করে তা চালায়। আপনি এখানে WinUnit প্রকল্পটি ডাউনলোড করতে পারেন । (এমএসডিএন এখন আপনার নিবন্ধটি নয়, পুরো বিষয়টি ডাউনলোড করার প্রয়োজন Win উইনউনিতটি এর মধ্যে অন্তর্ভুক্ত রয়েছে))


4

ফ্রেমওয়ার্ক VS9 সঙ্গে অন্তর্ভুক্ত করা হয় .NET, কিন্তু আপনি সি ++ / CLI মধ্যে টেস্ট লিখবেন, তাই যতদিন তুমি আরামদায়ক কিছু .NET isms শিক্ষা, আপনি সবচেয়ে কোনো সি ++ কোড পরীক্ষা করতে সক্ষম হওয়া উচিত পারবেন না।

বুস্ট.টেস্ট এবং গুগলতেস্ট দেখতে মোটামুটি একই রকম হতে পারে তবে কিছুটা ভিন্ন ব্যবহারের জন্য খাপ খাইয়ে নেওয়া হয়েছে । এগুলির উভয়েরই বাইনারি উপাদান রয়েছে, সুতরাং পরীক্ষাগুলি সংকলন করতে এবং পরিচালনা করতে আপনার সমাধানে একটি অতিরিক্ত প্রকল্পের প্রয়োজন।

আমরা যে কাঠামোটি ব্যবহার করি তা হ'ল সিএক্সএক্সস্টেস্ট , যা অনেক বেশি হালকা; এটি কেবলমাত্র শিরোনামই, এবং আপনার শিরোনাম থেকে টেস্ট স্যুট তথ্য স্ক্র্যাপ করতে পার্ল (!) স্ক্রিপ্ট ব্যবহার করে (স্যুটগুলি সিএক্সএক্সস্টেস্ট :: বেস থেকে প্রাপ্ত, আপনার সমস্ত পরীক্ষার পদ্ধতির নাম "পরীক্ষা" দিয়ে শুরু হয়) " স্পষ্টতই, এর জন্য আপনাকে এক উত্স বা অন্য কোনও থেকে পার্ল পাওয়া দরকার , যা আপনার বিল্ড এনভায়রনমেন্ট সেটআপে ওভারহেড যুক্ত করে।


সিএক্সএক্সস্টেস্ট পার্লের পরিবর্তে অজগর ব্যবহার করতে পারে
মার্টিন বেকেট

আপনার কোড দ্বারা প্রয়োজনীয় যে কোনও ডিএলএল সম্পর্কে আপনারও সতর্কতা অবলম্বন করা উচিত - আমার এনএনইটি এবং এমবিউনিট পরীক্ষার সি ++ / সিএলআই কোড নিয়ে সমস্যা হয়েছিল, ডিএলএল বোঝাইয়ের চেষ্টা করে।
অ্যান্ডি ডেন্ট

2

আমি ইউনিট টেস্ট ++ ব্যবহার করি ।

যেহেতু আমি এই পোস্টটি তৈরি করেছি সেই বছরগুলিতে উত্স উত্স থেকে গিথুবে চলে গেছে to এছাড়াও উদাহরণ টিউটোরিয়াল এখন আরো অজ্ঞেয়বাদী হয় - এ সব সেট আপ কোনো কনফিগারেশন বা প্রকল্প ঢোকা না।

আমি সন্দেহ করি এটি এখনও ভিজ্যুয়াল স্টুডিও 6 এর জন্য কাজ করবে কারণ প্রকল্পের ফাইলগুলি এখন সিএমকেকের মাধ্যমে তৈরি করা হয়েছে। আপনার যদি এখনও পুরানো সংস্করণ সমর্থনের প্রয়োজন হয় তবে আপনি সোর্সফোর্স শাখার অধীনে সর্বশেষ উপলভ্য সংস্করণটি পেতে পারেন ।


2

এখানে যে সরঞ্জামগুলি উল্লেখ করা হয়েছে সেগুলি হ'ল সমস্ত কমান্ড-লাইন সরঞ্জাম। আপনি যদি আরও সমন্বিত সমাধানের সন্ধান করেন তবে সিএফিক্স স্টুডিওতে একবার দেখুন , যা সি / সি ++ ইউনিট পরীক্ষার জন্য একটি ভিজ্যুয়াল স্টুডিও অ্যাডআইএন। এটি টেস্টড্রাইভন.নেটের সাথে বেশ মিল, তবে।


1

আমি ব্যবহার করেছি CppUnit VS2005 এবং অন্ধকার দিয়ে। উইকিটি খুব পুঙ্খানুপুঙ্খভাবে রয়েছে (বিশেষ করে যদি আপনি JUnit এর সাথে পরিচিত হন)।


1

আমি ভিএস ২০০৮ সম্পর্কে ১০০% নিশ্চিত নই, তবে আমি জানি যে মাইক্রোসফ্টরা তাদের টিম স্যুটটির অংশ হিসাবে ভিএস ২০০৫ এ প্রেরণ করেছে যে ইউনিট টেস্টিং কাঠামোটি কেবল নেট নেট, সি ++ এর জন্য নয়

আমি সিপিউউনিতও ব্যবহার করেছি এবং তা ঠিক আছে। NUnit / JUnit / ইত্যাদির মতো অনেকগুলি।

আপনি যদি বুস্ট ব্যবহার করেন তবে তাদের একটি ইউনিট পরীক্ষার গ্রন্থাগারও রয়েছে

উত্সাহের পেছনের ছেলেরা কিছু মারাত্মক কোডিং চপস রয়েছে, তাই আমি বলব যে তাদের কাঠামোটি বেশ ভাল হওয়া উচিত, তবে এটি সম্ভবত সবচেয়ে বন্ধুত্বপূর্ণ নাও হতে পারে :-)


1

আমি একই কারণে সিএক্সএক্স টেস্টও পছন্দ করি। এটি কেবলমাত্র একটি শিরোনাম ফাইল তাই কোনও সংযোগের প্রয়োজন নেই। পাইথন রানার পাশাপাশি আপনি পার্লের সাথে আটকে থাকেন না। আমি শিগগিরই গুগল লাইব্রেরি পর্যালোচনা করব। বুস্ট স্টাফ অনেক বেশি অন্যান্য লাগেজ টেনে নিয়ে যায়।


1

ভিজ্যুয়াল স্টুডিও ২০০৮ এর ইউনিট পরীক্ষক কেবলমাত্র নেট নেটওয়ার্কের জন্য যতটা আমি জানি is

আমি ভিজ্যুয়াল স্টুডিও 2005 এ সিপ্পুনিট ব্যবহার করেছি এবং এটি বেশ ভাল বলে খুঁজে পেয়েছি।

যতদূর আমার মনে আছে সেটআপটি তুলনামূলকভাবে বেদাহীন ছিল। কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনার পরীক্ষামূলক প্রকল্পগুলিতে লিঙ্কার (লিংকার → ইনপুট → অতিরিক্ত নির্ভরতা) cppunitd.lib অন্তর্ভুক্ত রয়েছে।

তারপরে, #include <cppunit/extensions/HelperMacros.h>আপনার শিরোনামে।

তারপরে আপনি নিজের পরীক্ষার ক্লাসটি কাজ করতে http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html এ ধাপগুলি অনুসরণ করতে পারেন ।


1

আমি ভিজ্যুয়াল স্টুডিও সহ উইন্ডোজ পরিবেশে একটি পরিচালনাহীন সি ++ অ্যাপ্লিকেশনটির জন্য ইউনিট পরীক্ষার প্রয়োগ করতে ভুগছিলাম। সুতরাং আমি পরিচালনা করতে পেরেছি এবং ব্যবস্থাপনাহীন সি ++ অ্যাপ্লিকেশন ইউনিট পরীক্ষার জন্য ধাপে ধাপে গাইড হিসাবে একটি পোস্ট লিখেছি। আমি আশা করি এটি আপনাকে সাহায্য করতে পারে।

ভিজ্যুয়াল স্টুডিওতে নিয়ন্ত্রণহীন সি ++ এর জন্য ইউনিট পরীক্ষা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.