2014-10-21 2 views
1

Я нашел эту полезную библиотеку PODAM, но я беспокоюсь, чтобы получить автоматический байт Array. Я использовал реализован AttributeStrategyКак получить байт [] atributte с PODAM

public class LogoStrategy implements AttributeStrategy<byte[]>{ 

private static final int MAX_SIZE_FILE = 512*1024; 

    @Override 
    public byte[] getValue() throws PodamMockeryException { 
    byte[] b = new byte[20]; 
    new Random().nextBytes(b); 
    return b; 
    } 

} 

, но когда я использовал я получил эту ошибку:

2014-10-21 20:13:04 PodamFactoryImpl [ERROR] The type of the Podam Attribute 
Strategy is not java.lang.String but [B. An exception will be thrown. 

Exception in thread "main" uk.co.jemos.podam.exceptions.PodamMockeryException: An illegal argument was passed 
at uk.co.jemos.podam.api.PodamFactoryImpl.manufacturePojoInternal(PodamFactoryImpl.java:1569) 
at uk.co.jemos.podam.api.PodamFactoryImpl.manufacturePojo(PodamFactoryImpl.java:129) 
at uk.co.jemos.podam.api.PodamFactoryImpl.manufacturePojo(PodamFactoryImpl.java:119) 
at cl.molavec.jpa.entities.singleton.QuotationPropertiesSingleton.getNewInstance(QuotationPropertiesSingleton.java:26) 
at cl.molavec.main.InsertDummyData.main(InsertDummyData.java:66) 

Caused by: java.lang.IllegalArgumentException: The type of the Podam Attribute Strategy is not java.lang.String but [B. An exception will be thrown. 
at uk.co.jemos.podam.api.PodamFactoryImpl.returnAttributeDataStrategyValue(PodamFactoryImpl.java:2888) 
at uk.co.jemos.podam.api.PodamFactoryImpl.manufacturePojoInternal(PodamFactoryImpl.java:1493) 
... 4 more 

Я реализовал AttributeStrategy, но с полукокса [] атрибут и все хорошо. Ошибка, которую я не мог понять, почему ожидает String.

Любые предложения?

Заранее спасибо.

+1

Как вы пытаетесь использовать? –

ответ

1

Я думаю, вы приложили @PodamStrategyValue аннотация к полю строки.

@PodamStrategyValue(LogoStrategy.class) 
String myAttribute; 

С LogoStrategy возвращает byte[] он не может быть назначен в строку, следовательно, исключение.

Либо изменить тип поля для byte[]

@PodamStrategyValue(LogoStrategy.class) 
byte[] myAttribute; 

или сделать LogoStrategy вернуть строку

public class LogoStrategy implements AttributeStrategy<String>{ 

    private static final Random rnd = new Random(); 

    @Override 
    public String getValue() throws PodamMockeryException { 
     byte[] bytes = new byte[20]; 
     rnd.nextBytes(bytes); 
     return DataTypeConverter.printHexBinary(bytes); 
    } 
} 
Смежные вопросы