मुझे पता है कि टाइप-पैरामीटरयुक्त परीक्षण और मूल्य-पैरामीटर परीक्षण को अलग से कैसे विकसित किया जाए। जो मैं समझने की कोशिश कर रहा हूं वह यह है कि दोनों को गठबंधन करना संभव है। दूसरे शब्दों में, एक सामान्य परीक्षण बनाएं जो उस प्रकार के लिए किसी भी प्रकार और मानों की श्रेणी लेता है।Google टेस्ट: क्या एक परीक्षण को गठबंधन करने का कोई तरीका है जो दोनों प्रकार पैरामीटर और मान पैरामीटरकृत है?
उत्तर
वहाँ प्रकार- parameterized परीक्षण और मूल्य-पैरामिट्रीकृत परीक्षण के किसी भी करने के लिए तैयार पहनने संयोजन नहीं है। googletest डेवलपर्स asked the question and they said No. किया गया है
हालांकि, वहाँ एक नियमित और आसान तरीका (के रूप में जोड़ा चर्चा में Zhanyong वान ने सुझाव दिया) जिसमें आप तैयार कर सकते हैं आप प्रकार parameterised परीक्षण का मामला ही है कि एक निर्दिष्ट के लिए कुछ शर्त परीक्षण है पैरामीटर प्रकार के मानों की श्रेणी । यहाँ एक प्राथमिक उदाहरण है जहाँ शर्त है बस 0 से अधिक है:
#include <vector>
#include "gtest/gtest.h"
template<class T>
struct foo_test : public ::testing::Test {
static std::vector<T> _range_;
};
TYPED_TEST_CASE_P(foo_test);
TYPED_TEST_P(foo_test, IsGreaterThanZero) {
for (TypeParam value : foo_test<TypeParam>::_range_) {
EXPECT_GT(value,0);
}
}
REGISTER_TYPED_TEST_CASE_P(foo_test,IsGreaterThanZero);
typedef ::testing::Types<char, int, float> MyTypes;
INSTANTIATE_TYPED_TEST_CASE_P(My, foo_test, MyTypes);
template<> std::vector<char> foo_test<char>::_range_{'1','2','3'};
template<> std::vector<int> foo_test<int>::_range_{1,2,3};
template<> std::vector<float> foo_test<float>::_range_{1.1,2.2,0.0};
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
जब संकलित और उस के उत्पादन में चलाया जाता है:
[==========] Running 3 tests from 3 test cases.
[----------] Global test environment set-up.
[----------] 1 test from My/foo_test/0, where TypeParam = char
[ RUN ] My/foo_test/0.IsGreaterThanZero
[ OK ] My/foo_test/0.IsGreaterThanZero (0 ms)
[----------] 1 test from My/foo_test/0 (0 ms total)
[----------] 1 test from My/foo_test/1, where TypeParam = int
[ RUN ] My/foo_test/1.IsGreaterThanZero
[ OK ] My/foo_test/1.IsGreaterThanZero (0 ms)
[----------] 1 test from My/foo_test/1 (0 ms total)
[----------] 1 test from My/foo_test/2, where TypeParam = float
[ RUN ] My/foo_test/2.IsGreaterThanZero
/home/imk/develop/SO/gtest/main.cpp:14: Failure
Expected: (value) > (0), actual: 0 vs 0
[ FAILED ] My/foo_test/2.IsGreaterThanZero, where TypeParam = float (0 ms)
[----------] 1 test from My/foo_test/2 (1 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 3 test cases ran. (1 ms total)
[ PASSED ] 2 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] My/foo_test/2.IsGreaterThanZero, where TypeParam = float
1 FAILED TEST
परिणाम होगा की तुलना में मोटे में विवरण का स्तर है आदर्श: केवल 3 परीक्षणों के बजाय 9। फिर भी, असफल मानों की सूचना दी जा सकती है, जैसा कि दिखाया गया है, इसलिए मोटे अनाज सहनशील हो सकते हैं।
कोई विचार है कि बिना किसी कोडिंग के प्रकार/मूल्य पैरामीटर के कार्टेशियन उत्पाद को कैसे प्राप्त किया जाए? – memecs
स्पष्ट होने के लिए, आप 'V0, .., VM' के प्रत्येक सेट के प्रत्येक प्रकार के लिए' T0, .., Tn' का परीक्षण करना चाहते हैं, जैसे कि 'Ti'' Vj' से रचनात्मक है कोई 'i <= n' और' j <= m'। क्या वह सही है? –
सही, सुनिश्चित नहीं है कि "वीजी से टीआई रचनात्मक" के साथ आपका क्या मतलब है। मैं आपको स्पष्ट होने के लिए एक उदाहरण दूंगा: मान लीजिए कि मेरे पास तीन प्रकार हैं {टी 1, टी 2, टी 3} और दो मान पैरामीटर {वी 1, वी 2}, मैं निम्नलिखित tuples के खिलाफ परीक्षण करना चाहता हूं: {(टी 1, वी 1), (टी 1, वी 2), (टी 1, वी 3), (टी 2, वी 1), (टी 2, वी 2), आदि ...}। प्वाइंट है, मेरे पास परीक्षण करने के लिए कई पैरामीटर और प्रकार हैं और मैं उन सभी को हार्ड-कोड नहीं कर सकता। – memecs
- 1. पीडीएफ.जेएस में पीडीएफ को गठबंधन करने का कोई तरीका है?
- 2. स्ट्रीम मैनिपुलेटर्स को गठबंधन करने का कोई अच्छा तरीका है?
- 3. क्या रननेबल को पैरामीटर पास करने का कोई तरीका है?
- 4. डब्ल्यूपीएफ में, क्या एक शैली के लिए दो स्टाइल को गठबंधन करने का कोई तरीका है?
- 5. दो सिंक को गठबंधन करने का पसंदीदा तरीका क्या है?
- 6. क्या एसिंक विधि का परीक्षण करने का कोई तरीका है?
- 7. एक्लिप्स चेतावनी को हल करने का उचित तरीका क्या है "पैरामीटरकृत नहीं है"?
- 8. क्या कोई ऐसा फ़ंक्शन लिख सकता है जो एक प्रकार लेता है और एक अलग प्रकार
- 9. क्या पैरामीटर को छोड़ने का कोई तरीका है?
- 10. हास्केल फ़ंक्शन जो एक प्रकार और मान लेता है और जांच करता है कि मान
- 11. क्या एक विशिष्ट आदेश में न्यूटिट टेस्ट निष्पादित करने का कोई तरीका है?
- 12. क्या netTcp बाइंडिंग में दोनों सत्र और स्ट्रीमिंग को सक्षम करने का कोई तरीका है?
- 13. क्या LINQ में मान सेट करने का कोई तरीका है?
- 14. क्या इन दो लिंक अभिव्यक्तियों को गठबंधन करने का कोई बेहतर तरीका है?
- 15. क्या Google क्रोम एक्सटेंशन में कमांड लाइन पैरामीटर प्राप्त करने का कोई तरीका है?
- 16. क्या Google Analytics के लिए Mixpanel जैसे कई ईवेंट पैरामीटर ट्रैक करने का कोई तरीका है?
- 17. क्या परीक्षण डेटा के साथ एक प्रकार का उदाहरण बनाने का कोई तरीका है?
- 18. क्या जावा में टेम्पलेट (जेनेरिक) पैरामीटर के प्रकार को खोजने का कोई तरीका है?
- 19. क्या स्ट्रिंग को छोटा करने का कोई और तरीका है?
- 20. क्या चेन विधियों का कोई तरीका है जो एक विकल्प-प्रकार को GetOrElse जैसा करता है, लेकिन विकल्प-प्रकार
- 21. परीक्षण करने का सबसे अच्छा तरीका यदि एक सामान्य प्रकार एक स्ट्रिंग है? (सी #)
- 22. पैरामीटर मान और फ़ंक्शन पैरामीटर प्रकार
- 23. PHP और HTML को गठबंधन करने का पसंदीदा तरीका?
- 24. क्या V3 google.maps.Polygon को फीका करने का कोई तरीका है?
- 25. क्या एक परीक्षण के लिए PHPUnit में कोड कवरेज को अक्षम करने का कोई तरीका है?
- 26. क्या phpDoc को पैरामीटर के रूप में ऑब्जेक्ट्स की सरणी दस्तावेज करने का कोई तरीका है?
- 27. क्या एचएटीओएम माइक्रोफॉर्मेट को सत्यापित करने का कोई तरीका है?
- 28. आईफोन: क्या FromNib लोड करने का कोई तरीका है और एक पुन: उपयोगकर्ता है?
- 29. (प्रकार) मान और प्रकार (मान) के बीच क्या अंतर है?
- 30. क्या कोई फ़ंक्शन रद्द करने का कोई तरीका है जो शून्य लौटाता है?
मैं वही सोच रहा था ... – memecs