Problema ao executar o JUnit

Bom dia pessoal

estou estudando o uso do JUnit mas me deparei com um problema logo de cara, não consigo executar o teste, da o erro abaixo

java.io.FileNotFoundException: I:\JAVA\Projetos\WDevSup\junitvmwatcher1562056590.properties (O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at java.io.FileReader.(FileReader.java:55)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1028)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:817)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1657)
at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:764)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:391)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:277)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:460)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)

alguém sabe o q está acontecendo?

desde já agradeço

Pode postar o seu código?

Olhando o erro, parece que o seu método está tentando ler um arquivo .properties. Se for realmente isso, o seu teste está errado, pois testes unitários não devem depender de outros recursos/classes. Para esse caso, use um mock object (aconselho o JMOck).

Mas é estranho, estou seguindo uma video aula da devmedia e a classe que ele montou le um xml.

só que no que ele mostra na vídeo aula funciona o JUnit.

Um teste que eu fiz numa classe minha de outro projeto, funcionou o teste.

será que tem alguma configuração no junit?

desde já agradeço

A questão não é que o JUnit não pode ler um XML. Até porque, quem vai ler é o método que você está testando.
A questão é que em um teste unitário, você deve testar apenas a unidade. Caso a unidade use recursos externos ou outras classes, elas devem ser simuladas por um Mock Object.

O erro que está dando deve ser porque a classe não está encontrando o arquivo .properties. Isso é comum, pois quando trabalhamos com sistemas WEB, o caminho para ler o arquivo é diferente do caminho absoluto do mesmo.

Como eu disse… poste o código do método que você está testando e também do seu JUnit

Segue os arquivos:

Spring.xml

[code]<?xml version="1.0" encoding="ISO-8859-1"?>

org.hibernate.dialect.FirebirdDialect org.firebirdsql.jdbg.FBDriver sysdba masterkey jdbc:firebirdsql:localhost/3050:devmedia
    <prop key="c3p0.acquire_increment">1</prop>
    <prop key="c3p0.idle_test_period">120</prop>
    <prop key="c3p0.max_size">50</prop>
    <prop key="c3p0.max_statements">100</prop>
    <prop key="c3p0.min_size">5</prop>
    <prop key="c3p0.timeout">150</prop>
  </props>
</property>

<!--
<property name="mappingResources">
  
</property>
-->
[/code]

SpringAcess.java

[code]package devmedia.srs;

import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
*

  • @author Shubacca
  • @date 18/10/2008
    */
    public class SpringAccess {
    private static ApplicationContext springContext;

public static synchronized ApplicationContext getSpringContext(){
if (springContext == null)
springContext = new ClassPathXmlApplicationContext(“devmedia/src/resource/Spring.xml”);

return springContext;

}

public static synchronized SessionFactory getSessionFactory(){
return (SessionFactory) getSpringContext().getBean(“hibernate”);
}

public SpringAccess() {
}

public static void main(String[] args) {
SessionFactory sf = getSessionFactory();

if (sf == null)
  System.out.println("Erro");
else
  System.out.println("OK");

}
}
[/code]

Person.java

[code]package devmedia.srs.test;

/**
*

  • @author Shubacca
  • @date 18/10/2008
    */
    public class Person {
    private String nome;
    private String city;
    private int age;

public Person() {
}

public Person(String nome, String city, int age) {
this.nome = nome;
this.city = city;
this.age = age;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

}
[/code]

SpringAcessTest.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package devmedia.srs;

import devmedia.srs.test.Person;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
*

  • @author Shubacca
    */
    public class SpringAccessTest {

public SpringAccessTest() {
}

@BeforeClass
public static void setUpClass() throws Exception {
}

@AfterClass
public static void tearDownClass() throws Exception {
}

@Before
public void setUp() {
}

@After
public void tearDown() {
}

/**

  • Test of getSpringContext method, of class SpringAccess.
    */
    @Test
    public void testGetSpringContext() {
    System.out.println(“getSpringContext”);
assertNotNull(SpringAccess.getSpringContext());

Person person1 = (Person) SpringAccess.getSpringContext().getBean("person1");

assertEquals(person1.getNome(), "Henrique");
assertEquals(person1.getCity(), "Belo Horizonte");
assertTrue(person1.getAge() == 28);

}

@Test
public void testGetHibernate() {
System.out.println(“getHibernate”);
assertNotNull(SpringAccess.getSessionFactory());
}
}[/code]

Olá,

Isso não tem a ver como usar um recurso externo, isso é um erro gerado pelo jUnit task do ANT. Tá lá no seu stack trace…

... at java.io.FileReader.<init>(FileReader.java:55) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:102 at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:817) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1657) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:764) ...
Provavelmente o ANT gera esse arquivo junitvmwatcherXXX.properties em algum lugar e não está conseguindo ler depois. Ou mesmo não está conseguindo gerar. Tenta mudar a versão do ANT, veja se seus classpaths estão em ordem, algo assim.

Se você jogar junitvmwatcher no Google vai achar um monte de gente com o mesmo problema, dá uma fuçada.

São mais de duas da manhã e tô sem sono, maldito horário de verão! :evil:

Abraço

Valeu vou dar uma olhada