Tout d'abord, Mockito peut créer des données factices qui peuvent être des entiers longs, etc. Il ne peut pas créer une énumération correcte car une énumération a un nombre spécifique d'ordinal, de nom, de valeur, etc. Donc, si j'ai une énumération
public enum HttpMethod {
GET, POST, PUT, DELETE, HEAD, PATCH;
}
j'ai donc un total de 5 ordinaux dans l'énumération HttpMethod mais Mockito ne le sait pas. Mockito crée des données factices et c'est toujours null, donc vous finirez par passer une valeur nulle. Voici donc la solution proposée : vous randomisez l'ordinal et obtenez une bonne énumération qui peut être passée pour d'autres tests
import static org.mockito.Mockito.mock;
import java.util.Random;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.internal.util.reflection.Whitebox;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.amazonaws.HttpMethod;
//@Test(expected = {"LoadableBuilderTestGroup"})
//@RunWith(PowerMockRunner.class)
public class testjava {
// private static final Class HttpMethod.getClass() = null;
private HttpMethod mockEnumerable;
@Test
public void setUpallpossible_value_of_enum () {
for ( int i=0 ;i<10;i++){
String name;
mockEnumerable= Matchers.any(HttpMethod.class);
if(mockEnumerable!= null){
System.out.println(mockEnumerable.ordinal());
System.out.println(mockEnumerable.name());
System.out.println(mockEnumerable.name()+"mocking suceess");
}
else {
//Randomize all possible value of enum
Random rand = new Random();
int ordinal = rand.nextInt(HttpMethod.values().length);
// 0-9. mockEnumerable=
mockEnumerable= HttpMethod.values()[ordinal];
System.out.println(mockEnumerable.ordinal());
System.out.println(mockEnumerable.name());
}
}
}
@Test
public void setUpallpossible_value_of_enumwithintany () {
for ( int i=0 ;i<10;i++){
String name;
mockEnumerable= Matchers.any(HttpMethod.class);
if(mockEnumerable!= null){
System.out.println(mockEnumerable.ordinal());
System.out.println(mockEnumerable.name());
System.out.println(mockEnumerable.name()+"mocking suceess");
} else {
int ordinal;
//Randomize all possible value of enum
Random rand = new Random();
int imatch = Matchers.anyInt();
if( imatch>HttpMethod.values().length)
ordinal = 0 ;
else
ordinal = rand.nextInt(HttpMethod.values().length);
// 0-9. mockEnumerable=
mockEnumerable= HttpMethod.values()[ordinal];
System.out.println(mockEnumerable.ordinal());
System.out.println(mockEnumerable.name());
}
}
}
}
Sortie :
0
GET
0
GET
5
PATCH
5
PATCH
4
HEAD
5
PATCH
3
DELETE
0
GET
4
HEAD
2
PUT