第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

GO 在測試設(shè)置方法中附加標(biāo)準(zhǔn)輸入

GO 在測試設(shè)置方法中附加標(biāo)準(zhǔn)輸入

Go
千萬里不及你 2022-06-27 11:01:39
我正在使用內(nèi)置testing模塊來運(yùn)行我在 GO 項(xiàng)目中進(jìn)行的一些功能測試。在我的項(xiàng)目中,我有外部依賴項(xiàng),我在我的TestMain方法中連接到這些依賴項(xiàng)。我將這些連接保存到變量中,然后我在測試中使用這些變量,并且連接可能需要很長時(shí)間才能正確建立(Kafka 有人嗎?)。我想按需運(yùn)行測試,但是在設(shè)置了這些變量之后。stdin所以我想要的是在我的函數(shù)中收聽TestMain并運(yùn)行或退出測試。但我希望它由用戶控制,這樣我就可以設(shè)置我的測試環(huán)境,并且測試將在我的命令下運(yùn)行。但可悲的是,似乎在運(yùn)行時(shí)go test ...直接stdin映射到/dev/null. 因此,當(dāng)我嘗試閱讀時(shí)os.Stdin,會(huì)出現(xiàn)EOF錯(cuò)誤。最低限度的代碼是:package testsimport (    "bufio"    "fmt"    "os"    "testing")func TestMain(m *testing.M) {    reader := bufio.NewReader(os.Stdin)    if input, err := reader.ReadString('\n'); err != nil {        fmt.Println(err)        fmt.Println("-----------")        fmt.Println(input)        os.Exit(1)    }    fmt.Println("ESCAPED!")    os.Exit(m.Run())}我已經(jīng)在圈子中閱讀了如何模擬單元測試和排序,但我的案例更多的是功能測試運(yùn)行器。有沒有辦法,甚至是一些詭計(jì),可以讓我打開或更改測試過程stdin?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

您可以重定向os.Stdin,但它取決于操作系統(tǒng):


package tests


import (

    "fmt"

        "os"

        "testing"

    "bufio"

    "runtime"

)


func TestMain(m *testing.M) {


    var ttyName string

    if runtime.GOOS == "windows" {

        ttyName = "con"

    } else {

        ttyName = "/dev/tty"

    }   


    f, err := os.Open(ttyName)

    if err != nil {

        panic(err)

    }

    defer f.Close()


    oldStdin := os.Stdin

    defer func() { os.Stdin = oldStdin }()


    os.Stdin = f


    reader := bufio.NewReader(os.Stdin)

        if input, err := reader.ReadString('\n'); err != nil {

        fmt.Println("Error:", err)

        fmt.Println("-----------")

        fmt.Println(input)

        os.Exit(1)

    }

    fmt.Println("ESCAPED!")

    os.Exit(m.Run())

}


func TestHello(t *testing.T){

    fmt.Println("Hello")

}


查看完整回答
反對 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號