Junit é uma estrutura de teste de regressão escrita por Erich Gamma e Kent Beck. O teste Junit é um teste de programador, ou seja, um teste de caixa branca. A página inicial do projeto: http://www.junit.org/
Ao usar o JUNIT, você escreve principalmente casos de teste herdando a categoria Testcase e usa o nome testxxx () para gravar testes de unidade.
Há três coisas que realmente precisam escrever testes com Junit:
1. Uma declaração de importação apresenta todas as classes no Junit.Framework.*.
2. Uma instrução EXTENDS permite que sua classe herde a partir do teste.
3. Um construtor que chama super (string).
Mathtool funcional
pacote com.zj.c01; public class Mathtool {public static int gcd (int num1, int num2) {int r = 0; while (num2! = 0) {r = num1 % num2; num1 = num2; num2 = r; } retornar num1; }}Classe de teste MathToolTest
pacote com.zj.c01; import junit.framework.testcase; public class MathToolTest estende o teste {public MathToolTest (Nome da String) {super (nome); } public void testgcd () {assertequals (5, mathtool.gcd (10, 5)); }} Quando usamos o JUNIT para testar exceções, a maneira mais fácil de pensar é usar tente ... capturar para pegar a exceção. Precisamos afirmar as seguintes condições:
1. Exceção que é realmente jogada 2. Tipo de classe da exceção jogada 3. O tipo específico da exceção é lançado. Geralmente, verifique a determinação da sequência contida no atributo da mensagem da exceção. Então você pode escrever o código comum como este:
@Test public void testBizexception () {try {senha.validate ("123"); falha ("nenhuma exceção jogada".); } catch (Exceção ex) {assertTrue (ex instância do Bizexception); assertTrue (ex.getMessage (). contém ("erro")); }} O método testado aqui é se o método senha.Validate () lança a exceção correspondente. Observe que Fail ("Nenhuma exceção jogada".) Na tentativa não é perdida aqui.
Linha de código, caso contrário, se o método que está sendo testado não lançar uma exceção, esse caso de uso passará e o que você espera é lançar uma exceção.
No Junit 4, não há necessidade de testar exceções do método como essa. Embora isso também possa determinar se a exceção esperada é executada, ela ainda tem desvantagens. Você saberá depois de compará -lo. O JUNIT não pode mostrar o motivo detalhado da falha de afirmação no método de tentativa ... captura.
Então, vamos dar uma olhada em como testar exceções desde Junit 4? Basta usar a anotação @Test (Execpted = Exception.Class), consulte o seguinte código:
@Test (esperado = bizexception.class) public void testBizexception () {senha.validate (null); }
Se o método que está sendo testado tiver o tipo Bizexception jogado, a afirmação será bem -sucedida. A propósito, @Test (esperado = Bizexception.class) pode determinar apenas o tipo da exceção, e não há anotação correspondente para afirmar informações mais específicas sobre a exceção, ou seja, não pode determinar o atributo da mensagem da exceção jogada.
Então, às vezes, lançaremos uma exceção de um tipo várias vezes em um método, mas as razões são diferentes, ou seja, as informações da mensagem da exceção são diferentes. Por exemplo, quando ocorre uma Bizexception, haverá as duas exceções a seguir:
New Bizexception ("A senha deve conter pelo menos 6 letras.") New Bizexception ("Comprimento da senha menor que 15 letras") Isso requer uma maneira de afirmar uma mensagem de exceção. Por esse motivo, desde Junit 4.7, demos uma escolha mais perfeita, que é o seguinte código:
@RULE PUBLER PERFIMEXCECTIMENTEEXEX = esperadoException.None (); @Test public void testBizexception () lança invalidpasswordException {esperax.expect (bizexception.class); esperadoex.expectMessage ("requerido"); Senha.Validate (""); } O código acima precisa ser focado em:
1. @RULE ANOTATADO DEPERAÇÃO Declaração da variável, deve ser pública
2. No @Test, ele não pode ser escrito como @Test (esperado = Bizexception.class), caso contrário, não poderá ser testado corretamente. Isto é, o método @Test (esperado = bizexception.class) e o método esperado.expectXxx () no método de teste não podem coexistir ao mesmo tempo. 3. Os parâmetros no esperadoex.expectMessage () são Matcher ou Substring, o que significa que expressões regulares podem ser usadas para determinar ou determinar se uma substring está incluída. 4. Outra coisa é muito pesada, escreva o método testado por trás do método esperado.expectXxx (), caso contrário, a exceção que não pode ser testada corretamente 5. O último é que, desde que o método de teste jogue diretamente a exceção do método que está sendo testado, isso não afetará a exceção que você estiver preocupado. Como mencionado anteriormente, o uso do método de tentativa ... Catch também pode testar corretamente a exceção. Quais são os benefícios de comparar o @Test (esperado =…) ou @Rule e tentar… Catch Method? Obviamente, o método recomendado pelo Junit 4 é conciso e claro. Vejamos o que o Junit o levará quando o teste falhar?
O aviso que você recebe quando o teste falhou anormalmente:
Quando não há exceção:
java.lang.assertionError: nenhuma exceção jogada. em org.junit.assert.fail (assert.java:91) em cc.unmi.passwordtest.passwordLengthlessthan6LettersHrowsexception (senhaTest.java:20)
Quando o tipo de exceção está errado ou a mensagem de exceção está errada:
java.lang.assertionError: em org.junit.assert.fail (assert.java:91) em org.junit.assert.asserttrue (assert.java:43) em org.junit.assert.java:54) em cc.unmi.passwordtest.passwordLengthlessthan6LettersHrowsexception (senhaTest.java:22)
A ajuda acima para os erros de posicionamento não é particularmente grande. Veja as instruções quando o teste falhar quando @Test (esperado = Bizexception.class):
java.lang.assertionError: Exceção esperada: cc.test.bizexception em org.junit.internal.runners.statements.expecception.Evaluate (expectException.java:32) em org.junit.rule.rule.expectException $ weerthExceptement.ExecentSalate (espera.junit.rules.expectException $ weerthExceptement.ExeCent.EValate (
Use o @Rules ThreoundException para testar exceções. Dicas quando falha:
java.lang.assertionError: esperado: (exceção com mensagem uma string contendo “sim. org.junit.rules.exteceException $ weer weerthexceptionstatement.Evaluate (Espera -mexception.java:114)
Especialmente o método do @Rules Wereefception está claramente ciente de por que o teste falhou. Que exceção é esperada, qual string está contida na mensagem de exceção, que tipo de exceção é realmente obtida e qual é a mensagem na exceção. Com isso, você saberá como corrigir seu programa assim que o vir.