Quand j'ai utilisé junit avec eclipse, j'ai eu un peu de mal, donc je vais décrire la méthode de réglage comme un mémorandum. Plus précisément, l'erreur suivante peut se produire lorsque la classe cible de test a un constructeur privé, la solution de contournement est donc décrite.
The constructor Empty() is not visible
Comment tester la méthode privée dans Junit
[Obtenir la méthode, exécuter la méthode avec l'API de réflexion Java] (http://pppurple.hatenablog.com/entry/2016/07/23/205446)
OS:Windows8.1 32bit eclipse:4.5.2
TestTarget.java
packege com.web.test
public class TestTarget {
private TestTarget() {
//Pas de description
}
private int minus(int x, int y) {
return (x - y);
}
}
Créer une classe de test junit pour la classe sous test
SampleTest.java
import static org.junit.Assert.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.Test;
public class SampleTest {
@Test
public void test()
throws NoSuchMethodException,
SecurityException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
{
TestTarget testTarget = new TestTarget();
Method method = Sample.class.getDeclaredMethod("minus", int.class, int.class);
method.setAccessible(true);
int actual = (int)method.invoke(testTarget, 8, 2);
assertEquals(6, actual);
}
Si tu fais ça The constructor Empty() is not visible Cela s'est produit, alors changez-le comme suit
SampleTest.java
import static org.junit.Assert.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.Test;
public class SampleTest {
@Test
public void test()
throws NoSuchMethodException,
SecurityException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
{
//Avant correction
//TestTarget testTarget = new TestTarget();
//modifié
//Obtenez une instance de la classe testée à l'aide de l'API de réflexion
TestTarget testTarget = Class.forName("com.web.test.TestTarget").newInstance();
Method method = testTarget.class.getDeclaredMethod("minus", int.class, int.class);
method.setAccessible(true);
int actual = (int)method.invoke(testTarget, 8, 2);
assertEquals(6, actual);
}
avec ça The constructor Empty() is not visible A été résolu