Go:
টেস্ট লিখা

কিভাবে:

Go ভাষায়, টেস্টগুলি সাধারণত যে কোডের সাথে পরীক্ষা করা হয় সেই একই প্যাকেজে লেখা হয়। টেস্ট যুক্ত ফাইলগুলি _test.go সাফিক্স দিয়ে নামকরণ করা হয়। টেস্টগুলি এমন ফাংশন যা testing.T অবজেক্টের একটি পয়েন্টার নেয় (যা testing প্যাকেজ থেকে আসে) এবং t.Fail(), t.Errorf(), ইত্যাদি মেথড ডাক করে ব্যর্থতা সংকেত করে।

math.go মধ্যে সংজ্ঞায়িত একটি সাধারণ ফাংশন Add এর জন্য টেস্টের উদাহরণ:

// math.go
package math

func Add(x, y int) int {
    return x + y
}

টেস্ট ফাইল math_test.go:

package math

import "testing"

func TestAdd(t *testing.T) {
    result := Add(1, 2)
    expected := 3
    if result != expected {
        t.Errorf("Add(1, 2) = %d; want %d", result, expected)
    }
}

আপনার টেস্টগুলি চালাতে go test কমান্ড আপনার টেস্ট ফাইলগুলির একই ডিরেক্টরিতে ব্যবহার করুন। পাস করা টেস্টের সাম্পল আউটপুট হবে এরকম:

PASS
ok      example.com/my/math 0.002s

টেবিল-চালিত টেস্টের জন্য, যা বিভিন্ন ইনপুট এবং আউটপুট সংমিশ্রণ দক্ষতার সাথে পরীক্ষা করতে দেয়, টেস্ট কেস প্রতিনিধিত্বকারী কাঠামোর একটি স্লাইস সংজ্ঞায়িত করুন:

func TestAddTableDriven(t *testing.T) {
    var tests = []struct {
        x        int
        y        int
        expected int
    }{
        {1, 2, 3},
        {2, 3, 5},
        {-1, -2, -3},
    }

    for _, tt := range tests {
        testname := fmt.Sprintf("%d+%d", tt.x, tt.y)
        t.Run(testname, func(t *testing.T) {
            ans := Add(tt.x, tt.y)
            if ans != tt.expected {
                t.Errorf("got %d, want %d", ans, tt.expected)
            }
        })
    }
}

গভীর দর্শন

Go টেস্টিং ফ্রেমওয়ার্ক, যা Go 1-এ ভাষাটির সাথে সাথে প্রবর্তন করা হয়েছিল, Go টুলচেইনের সাথে সহজে সংহত হওয়ার ডিজাইন করা হয়েছিল, যা Go-র সহজ এবং দক্ষ সফটওয়্যার উন্নয়নের উপর জোর দেয়। অন্যান্য ভাষার কিছু টেস্টিং ফ্রেমওয়ার্কের মতো বাহ্যিক লাইব্রেরি বা জটিল সেটআপের উপর নির্ভর না করে, Go-র নির্মিত testing প্যাকেজ টেস্ট লেখা এবং চালানীবিক উপায় প্রদান করে।

Go-র টেস্টিং পদ্ধতির এক আকর্ষণীয় দিক হল এটি যে কনভেনশন ওভার কনফিগারেশন নীতি গ্রহণ করে, যেমন ফাইল নেমিং প্যাটার্ন (_test.go) এবং বাহ্যিক নির্ভরতা অপেক্ষা স্ট্যান্ডার্ড লাইব্রেরি কার্যকারিতা ব্যবহারের মতো। এই সরল পদ্ধতি ডেভেলপারদের টেস্ট লেখার জন্য উৎসাহিত করে, যেহেতু প্রবেশের বাধা কম।

যদিও Go-র নির্মিত টেস্টিং সুবিধাগুলি অনেক ক্ষেত্রে ঢেকে রাখে, তবুও তৃতীয় পক্ষের সরঞ্জাম বা ফ্রেমওয়ার্কের কিছু ক্ষেত্রে আরও ফাংশনালিটি প্রদানের জন্য বিদ্যমান, যেমন মক জেনারেশন, ফাজ টেস্টিং, বা বিহেভিয়ার-চালিত ডেভেলপমেন্ট (BDD) শৈলীর টেস্ট। Testify বা GoMock এর মতো জনপ্রিয় লাইব্রেরিগুলি Go-র মানক টেস্টিং সামর্থ্যগুলির পরিপূরক, বিশেষ করে অনেক নির্ভরতাসমূহের জটিল অ্যাপ্লিকেশনের ক্ষেত্রে আরও প্রকাশকারী অ্যাসারশন বা মক জেনারেশন ক্ষমতা প্রদান করে।

এই বিকল্পগুলির অস্তিত্ব সত্ত্বেও, স্ট্যান্ডার্ড Go টেস্টিং প্যাকেজ Go ভাষায় টেস্টিংয়ের জন্য মূল ভিত্তি হিসেবে অবশিষ্ট থাকে এর সরলতা, কর্মক্ষমতা, এবং ভাষা ও টুলচেইনের সাথে ঘনিষ্ঠ সংযোগের কারণে। ডেভেলপাররা এটিকে তৃতীয় পক্ষের সরঞ্জামগুলির সাথে সম্পূরক করতে চায় কিনা, Go টেস্টিং ফ্রেমওয়ার্ক কোডের মান এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য একটি দৃঢ় ভিত্তি প্রদান করে।