2015-08-11 4 views
-1

Я хотел бы знать, что для вас - лучший способ создать большое количество объектов.Создайте много объектов для целей тестирования

Приведи пример. Я хочу высмеять 50 продуктов, продукт - это класс с именем STRING и ценой INTEGER.

public class StuffTO { 

    String category; 
    String name; 
    String price; 
    String qty; 
} 

Мне не нужно определенное имя или цену, они могут быть случайными.

Теперь я хотел бы знать, что является лучшим способом для создания 50 случайного продукта писать меньше коды возможно ..

+7

A для цикла и 'Random'. – Kayaman

+0

Если вы хотите «цена INTEGER», то измените «String price» на «int price» (возможно, двойной будет работать лучше). Кроме того, 'qty' должен, вероятно, быть int или коротким. – vefthym

+0

Я написал утилиту для этого в Groovy - http://coffeaelectronica.com/blog/2015/property-randomization.html Я не тестировал его против Java POJO, но, возможно, он предоставит вам идеи по тому, что вы ищете. – cjstehno

ответ

2

Существует реализация Java из QuickCheck, которая имеет интерфейсы для генерации тестовых данных.

В основном QuickCheck относится к генераторам данных. Метод RunCheck QuickCheck - это просто фантазия для реализации цикла. QuickCheck может помочь в сценариях, где должны тестироваться целые классы тестовых примеров, и не представляется возможным писать тесты для всех различных тестовых сценариев.

Там также JFixture, который доступен на github и опубликованы maven central. Это все еще находится в активной разработке, и запросы функций выполняются.

JFixture - это библиотека Java, которая помогает в написании тестов модулей, особенно при выполнении Test Driven Development. Он генерирует типы, основанные на понятии «ограниченный недетерминизм», который представляет собой реализацию тестового шаблона xUnit с генерируемым значением.

0
public List<StuffTO> create(final int amount){ 
    final Random random = new Random(); 
    final List<StuffTO> list = new ArrayList<>(); 
    for(int i=0;i<amount;i++){ 
     list.add(new StuffTO("cat"+random.nextInt(100), "name"+random.nextInt(100), "price"+random.nextInt(100), "qty"+random.nextInt(100))); 
    } 
    return list; 
} 

class StuffTO { 
    String category; 
    String name; 
    String price; 
    String qty; 

    public StuffTO(){ 

    } 
    public StuffTO(String category, String name, String price, String qty) { 
     this.category = category; 
     this.name = name; 
     this.price = price; 
     this.qty = qty; 
    } 

} 
+0

Какова цель конструктора по умолчанию? – Manu

+0

Используется для этого, потому что некоторым пакетам (gson, jackson) нужны конструкторы по умолчанию для автоматической сопоставления pojo. Быть в безопасности. Я не знаю, что этот объект должен делать дальше ... – Danielson

-1
List<StuffTo> stuff = new ArrayList<>; 
List<String> categories = {"category1", "category2", ....}; 
List<String> names = {"name1", "name2", ....}; 
List<String> prices = {"price1", "price2", ....}; 
List<String> qtys= {"qty1", "qty2", ....}; 

for(int i = 0; i <= 50; i++){ 
    StuffTo stuffTo = new StuffTo; 
    stuffTo.category = catefories[i]; 
    stuffTo.name = names[i]; 
    stuffTo.price = prices[i]; 
    stuffTo.qty = qtys.[i]; 
    stuff.Add(stuffTo); 
} 

это только основная идея. Теперь вам просто нужно перебирать список материалов. Надеюсь, поможет.

-Fabian

+0

не очень хороший подход. пользователь должен написать строки 200 (или 204 ...), и он также не компилируется. – vefthym

2

Вы можете создать случайные объекты в цикле (например, 50 в коде) и хранить их в любой коллекции (например, Arraylist в коде). Код будет работать за лимит, который вы даете, и создавать объекты и хранить их в Arraylist.

int i=0; 
ArrayList<StuffTO > TestList= new ArrayList<StuffTO >(); 
while(i<50) { 

    TestList.add(new StuffTO ("aa"+i, "bb"+i, "cc"+i, "dd"+i)); 

i++; 
} 
+0

вам не хватает вызова конструктору .. – vefthym

+0

yup .. исправлено. Теперь все должно быть хорошо. –

+0

правильный. Добавление требуемого конструктора, только для более полного ответа, делает трюк (даже если это не «случайный», но я думаю, это не имеет большого значения).Я бы также использовал 'for', но это вопрос вкуса :) – vefthym

Смежные вопросы