comando de teste de ir em detalhes

prefácio

ir parâmetros de teste tem um muito rico, alguns dos parâmetros utilizados para controlar os testes de compilação, outros parâmetros de controle para realizar o teste.

Sobre a cobertura do teste, veterinário e parâmetros pprof relacionados a pular a primeira, vamos apresentar em detalhes quando se discute o conteúdo relevante.

Parâmetros de controlo compilado

-args

Indicando a volta dos -args ir parâmetros de teste ir para o teste. função de teste específico, com os parâmetros em conformidade para controlar o processo de teste.

-Args pode ser anexado à parte de trás de uma série de parâmetros, todos os parâmetros serão passados ​​em uma corda, cada parâmetro como uma string, a string e coloque as fatias.

// TestArgs usado para demonstrar como analisar parâmetros -args

func TestArgs (T *) {testing.T

se! flag.Parsed () {

flag.Parse ()

}

Arglist: = flag.Args () // flag.Args () retorna todos os parâmetros -args depois, representa uma fatia, cada elemento representa um parâmetro

para _, arg: = variam Arglist {

Se arg == "nuvem" {

t.Log ( "Correndo em nuvem.")

}outro {

t.Log ( "Correndo em outro modo.")

}

}

}

Nos parâmetros ao executar o teste:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> go teste -run TestArgs -v -args "nuvem"

configuração TestMain.

=== TestArgs RUN

--- Pass: TestArgs (0.00s)

unit_test.go: 28: Correndo em nuvem.

PASSAR

TestMain lágrima-down.

ok 0.353s gotest

parâmetros de teste passados ​​para os -args parâmetros especificados.

-json

parâmetro de teste ir -json indica o resultado da conversão é a saída para um formato json para facilitar o uso de testes analíticos automatizados.

Exemplos são como se segue:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> teste go -run TestAdd -json

{ "Time": "2019-02-28T15: 46: 50,3756322 + 08: 00", "Action": "output", "Package": "gotest", "saída": "configuração TestMain \ n"}

{ "Time": "2019-02-28T15: 46: 50,4228258 + 08: 00", "Action": "run", "Package": "gotest", "Test": "TestAdd"}

{ "Time": "2019-02-28T15: 46: 50,423809 + 08: 00", "Action": "output", "Package": "gotest", "Test": "TestAdd", "saída":" === RUN TestAdd \ n "}

{ "Time": "2019-02-28T15: 46: 50,423809 + 08: 00", "Action": "output", "Package": "gotest", "Test": "TestAdd", "saída":" --- PASS: TestAdd (0.00s) \ n "}

{ "Time": "2019-02-28T15: 46: 50,423809 + 08: 00", "Action": "passar", "Package": "gotest", "Test": "TestAdd", "decorrido": 0 }

{ "Time": "2019-02-28T15: 46: 50,4247922 + 08: 00", "Action": "output", "Package": "gotest", "saída": "PASS \ n"}

{ "Time": "2019-02-28T15: 46: 50,4247922 + 08: 00", "Action": "output", "Package": "gotest", "saída": "TestMain lágrima-down \ n" }

{ "Time": "2019-02-28T15: 46: 50,4257754 + 08: 00", "Action": "output", "Package": "gotest", "saída": "ok \ tgotest \ t0.465s \ n "}

{ "Time": "2019-02-28T15: 46: 50,4257754 + 08: 00", "Action": "passar", "Package": "gotest", "decorrido": 0,465}

-o

Especifica parâmetro -o o programa executável binário resultante, e realizar o teste, o teste não exclui o fim do programa.

Sem este parâmetro, ir teste o programa executável binário resultante armazenado no diretório temporário, em seguida, exclua o fim da execução.

Exemplos são como se segue:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> teste go -run TestAdd -o TestAdd

configuração TestMain.

PASSAR

TestMain lágrima-down.

ok 0.439s gotest

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> TestAdd

configuração TestMain.

PASSAR

TestMain lágrima-down.

Neste exemplo, use o parâmetro -o para especificar os binários gerados "TestAdd" e coloque o diretório atual, após o fim da execução do teste, você ainda pode executar o programa binário diretamente.

Parâmetros de controlo do teste

regexp -bench

O padrão não ir testes de desempenho de teste, usando o parâmetro -bench antes de poder executar e executar apenas a função de teste de desempenho.

As expressões regulares para as quais a triagem desempenho teste a ser realizado. Se você deseja executar todos os testes de desempenho, usando o parâmetro "-bench." Ou "-bench =.".

expressão regular aqui não é estritamente sentido canônico, mas tipo de relacionamento de contenção.

Existem três testes de desempenho, tais como a seguinte:

  • func BenchmarkMakeSliceWithoutAlloc (b * testing.B)

  • func BenchmarkMakeSliceWithPreAlloc (b * testing.B)

  • func BenchmarkSetBytes (b * testing.B)

Utilização parâmetros "-bench = Fatia", em seguida, os dois primeiros testes, porque ambos contêm "fatia", ele vai ser executada, e o terceiro teste não será realizada.

Para um subtest cenário compreendendo, o correspondente é combinado em camadas. Como um exemplo da sub-teste compreendendo:

func BenchmarkSub (b * testing.B) {

b.Run ( "A = 1", benchSub1)

b.Run ( "A = 2", benchSub2)

b.Run ( "B = 1", benchSub3)

}

função de teste convenção de nomenclatura, o nome de um dos sub-ensaios precisam de testar o nome pai como um prefixo e uma ligação "/", o exemplo acima contém realmente quatro ensaios:

  • Sub

  • Sub / A = 1

  • Sub / A = 2

  • Sub / B = 1

Se você quiser executar as três sub-testes, usando o parâmetro "Sub -bench". Se você quiser executar "Sub / A = 1", o parâmetro "-bench Sub / A = 1". Se você quiser executar "Sub / A = 1" e "Sub / A = 2", o parâmetro "-bench Sub / A =".

-benchtime s

-benchtime especificar o tempo de execução de cada teste de desempenho, se não especificado, os 1s tempo padrão.

Por exemplo, cada um dos testes de desempenho 2s execução set execução, os parâmetros são: "ir teste -bench Sub / A = 1 2s -benchtime".

-CPU 1,2,4

Após -CPU parâmetro proporciona uma lista do número da CPU, o fornecimento da lista, então o teste especificado em conformidade com a lista e o número de CPU fornecida GOMAXPROCS foram testados.

Por exemplo, "-CPU 1,2", então cada teste será realizado duas vezes, uma vez executado por uma CPU, 2 é uma execução CPU. Por exemplo, utilizando o comando "ir teste -bench Sub / A = 1 -CPU 1,2,3,4" teste é realizado:

BenchmarkSub / A = 1 1000 1256835 ns / sobre

BenchmarkSub / A = 2/1 2000 912109 ns / sobre

BenchmarkSub / A = 3/1 2000 888671 ns / sobre

BenchmarkSub / A = 4/1 2000 894531 ns / sobre

Os resultados dos testes nos testes subsequentes foram -2, -3, -4, respectivamente, quando executado no valor nome GOMAXPROCS. Se GOMAXPROCS é 1, ele não é exibido.

n -count

número especificado -count de vezes que cada teste realizado, o tempo de execução padrão.

Por exemplo, especificar a execução do teste duas vezes:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> go teste -bench Sub / A = 1 -count 2

configuração TestMain.

Goos: janelas

goarch: amd64

pkg: gotest

BenchmarkSub / A = 4/1 2000 917968 ns / sobre

BenchmarkSub / A = 4/1 2000 882812 ns / sobre

PASSAR

TestMain lágrima-down.

ok 10.236s gotest

Os resultados podem ser vistos nos resultados do teste serão apresentados duas vezes.

Se você usa o número especificado -count de execuções também especificar lista -CPU, em seguida, contar o número de testes serão realizados na quantidade especificada de cada CPU.

Note-se que o teste de exemplo não se preocupa com parâmetros -count e -CPU, é sempre executada uma vez.

-failfast

Por padrão, o teste de movimento serão realizados para testar todo o jogo e, finalmente, imprimir os resultados do teste, se bem sucedido ou não.

-failfast especificar se houver uma falha no teste ocorre, pare imediatamente o teste. Isto é, quando há um grande número de testes precisam ser realizados, pode identificar problemas mais rapidamente.

regexp -list

-LIST apenas uma lista de correspondência de função de teste bem sucedido, na verdade não executar. Além disso, não listados subrotina.

Por exemplo, usando o parâmetro "Sub -list" então lista apenas três subtestes incluem testes, mas não lista subtestes:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> go testar -list Sub

configuração TestMain.

TestSubParallel

TestSub

BenchmarkSub

TestMain lágrima-down.

ok 0.396s gotest

n -parallel

Especifica o número máximo de testes simultâneos.

Quando testado usando o método t.Parallel () para o teste em simultâneo, será limitado pelo número máximo de concorrentes, concomitante com a espera-se teste GOMAXPROCS por padrão, outros ensaios só podem ser bloqueados.

regexp -run

De acordo com a expressão regular com o teste de unidade e exemplos de teste. regras de correspondência regulares e semelhante -bench.

d -timeout

Por padrão, a execução do teste ao longo de 10 minutos irá expirar e sair.

Quando os casos, vamos definir os 1s de tempo de espera, vai parar por causa de um tempo limite teria sido exigido pelo teste de 3s:

E: \ OpenSource \ GitHub \ RainbowMango \ GoExpertProgrammingSourceCode \ GoExpert \ src \ gotest> go teste -timeout = 1s

configuração TestMain.

pânico: teste expirou depois de 1s

Tempos limite pode ser definido em segundos, e por momentos:

  • Definir em segundos: xs -timeout ou -timeout = xs

  • Por sub-conjunto: -timeout xm ou -timeout = xm

  • tempo definido: -timeout xh ou -timeout = xh

-v

Por padrão, simplesmente imprimir os resultados do teste dos resultados do teste, o parâmetro -v pode imprimir o registro detalhado.

Sob o teste de desempenho, sempre imprimir o log, o log porque às vezes afetam os resultados de desempenho.

-benchmem

Por padrão, os resultados de teste de desempenho imprimir apenas o número de corridas, cada operação demorada. -Benchmem pode ser impresso utilizando o número de bytes atribuídos a cada operação, o número de objectos atribuídos para cada operação.

// não use -benchmem

BenchmarkMakeSliceWithoutAlloc-4 971191 2,000 Ns / a

// uso -benchmem

BenchmarkMakeSliceWithoutAlloc-4 914550 2,000 NS / 4654335 / B em 30 ALLOCS / em

Aqui, o significado de cada operação para o ciclo de operação, como mostrado no exemplo que se segue:

func BenchmarkMakeSliceWithoutAlloc (b * testing.B) {

para i: = 0; i <bN; i ++ {

gotest.MakeSliceWithoutAlloc () // uma única operação

}

}

Publicado 75 artigos originais · ganhou elogios 17 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/weixin_43778179/article/details/104802892
Recomendado
Clasificación