JUnit TestCase instanciação objeto
-
05-07-2019 - |
Pergunta
é um novo (ou diferente) instância de objeto TestCase
é usada para executar cada método de teste em um caso de teste JUnit? Ou uma instância é reutilizado para todos os testes?
public class MyTest extends TestCase {
public void testSomething() { ... }
public void testSomethingElse() { ... }
}
Ao executar este teste, quantas instâncias da classe MyTest
é criado?
Se possível, fornecer um link para um código de documento ou fonte onde eu possa verificar o comportamento.
Solução
Eu não poderia encontrar uma resposta clara nos docs JUnit sobre sua pergunta, mas a intenção, como anjanb escreveu, é que cada teste é independente dos outros, por isso, uma nova instância TestCase poderia ser criado para cada teste a ser prazo.
Se você tem configuração de teste caro ( " luminárias ") que pretende ser compartilhado entre todos os casos de teste em uma classe de teste, você pode usar o @BeforeClass anotação em um método estático para alcançar este resultado: http://junit.sourceforge.net /javadoc_40/org/junit/BeforeClass.html. Nota no entanto, que uma nova instância ainda podem ser criados para cada teste, mas isso não afetará os dados estáticos seu método @BeforeTest foi inicializado.
Outras dicas
Sim, uma instância separada é criado.
Ao executar esse teste, 2 casos de MyTest é criado.
Se você quer um comportamento diferente, uma opção é usar uma ferramenta similar chamado TestNG ( http://testng.org / doc / ).
Não há uma instância para cada teste. Tentar
public class MyTest extends TestCase {
public MyTest() { System.out.println("MyTest Constructor");
public void setUp() { System.out.println("MyTest setUp");
public void tearDown() { System.out.println("MyTest tearDown");
public void testSomething() { System.out.println("MyTest testSomething");
public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}
O Sourcecode (incluindo que a versões mais recentes - o seu eo meu exemplo é JUnit 3) está na http: // www. junit.org
Se você está perguntando isso porque você está preocupado com os dados que está sendo inicializado e re-inicializada em seu construtor, estar ciente de que a forma prescrita para inicializar seus dados de casos de teste é via setup () e tearDown () exclusivamente.
Sim, definitivamente. Eu achei que os dados que eu armazenados em variáveis ??de instância não pôde ser acessado entre os testes devido ao seu design.