Tengo un problema sencillo que no sé cómo resolver!
Tengo un solo archivo de Java User.java
:
import java.util.Vector;
public class User {
private String name;
private Vector<User> friends;
public User(String name) {
this.name = name;
this.friends = new Vector<>();
}
public void addFriend(User newfriend) {
friends.add(newfriend);
}
public boolean isFriendsWith(User friend) {
return friends.indexOf(friend) != -1;
}
}
y tengo una clase simple prueba UserTest.java
al lado de esta clase:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class UserTest {
@Test
public void evaluatesExpression() {
User user = new User("foo");
User user2 = new User("bar");
user.addFriend(user2);
assertEquals(true, user.isFriendsWith(user2));
}
}
Quiero correr esta clase de prueba para la User
clase. No estoy usando entornos de desarrollo como Eclipse o IntelliJ, así que quiero recopilar la prueba desde la línea de comandos de Linux, pero este comando:
javac -cp .:"/usr/share/java/junit.jar" UserTest.java
me da los siguientes errores:
UserTest.java:1: error: package org.junit does not exist
import static org.junit.Assert.assertEquals;
^
UserTest.java:1: error: static import only from classes and interfaces
import static org.junit.Assert.assertEquals;
^
UserTest.java:2: error: package org.junit does not exist
import org.junit.Test;
^
UserTest.java:6: error: cannot find symbol
@Test
^
symbol: class Test
location: class UserTest
UserTest.java:11: error: cannot find symbol
assertEquals(true, user.isFriendsWith(user2));
^
symbol: method assertEquals(boolean,boolean)
location: class UserTest
5 errors
Nota: todo lo que he visto en Stackoverflow se trata de probar un único archivo en un proyecto o construyendo y probando con Gradle y ..., pero no sé mucho acerca de Java y no necesito saber mucho, acabo de necesidad a saber la forma más sencilla de crear y ejecutar una prueba para una sola clase Java.
Nota 2: He instalado con JUnit apt install junit
y se instala junit-3-8-2
la versión.
Nota 3: Tengo problemas al intentar compilar mi clase de prueba, ni siquiera he llegado a la etapa en la que se puede ejecutar las pruebas!
Después de un buen montón de ensayo y error en la sección de comentarios, la causa era un viejo JUnit 3.8.2 dependencia. Los comunicados de 3.x utilizan un espacio de nombres diferente que fue cambiado en 4.xa org.junit
.
Por lo tanto las clases en las que no se encuentran durante la compilación de la prueba.
Para depurar este tipo de problemas de descomprimir el frasco con unzip
el Linux puede ser útil.