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
}
}