Внедрение полей класса в Java - PullRequest
       10

Внедрение полей класса в Java

0 голосов
/ 03 февраля 2011

Привет всем! У меня есть часть программного обеспечения, которую я хотел бы запустить много раз, каждое для определенного значения поля класса, которое установлено в конструкторе класса.
Например, где-то в коде что-то не такстроки

public class Stuff
{
   private double importantVal;
   public Stuff(double val)
   {
      this.importantval = val;
   }
   public double doStuff()
   {
      return 4 * importantVal;
   }
}

Этот класс и метод находятся очень далеко в стеке программ / вызовов, поэтому я не могу просто вызвать doStuff несколько раз сам по себе.
Я хотел бы протестироватьзапрограммируйте для различных значений важных значений, возможно, поместив их в файл и выполнив итерации по ним.Я много раз отрабатывал простой способ запуска программы, но у меня нет хорошей идеи о том, как подставить различные значения важный.Если все остальное терпит неудачу, я всегда могу написать сценарий, который изменяет исходный код, но кажется уродливым и специальным.Есть ли более элегантное решение, включающее инъекцию, или что-то в этом роде?

Ответы [ 3 ]

3 голосов
/ 03 февраля 2011

Чтобы проиллюстрировать, что люди пытаются рассказать вам здесь, вот как могут выглядеть тестовые сценарии:

0 голосов
/ 03 февраля 2011

у вас есть несколько экземпляров класса Stuff? если нет, возможно, вы могли бы попытаться «ввести» значения, сделав важныеVal статическими? или для ввода нескольких значений используйте список?

public class Stuff{

   private static List<Double> testVals = new LinkedList()<Double>;
   private double importantVal;
   public Stuff(double val)
   {
      this.importantval = val;
   }

   public static addTest(double test){
       testVals.add(test);
   }

   public double doStuff()
   {
      return 4 * testVals.removeFirst();
   }

}
0 голосов
/ 03 февраля 2011
public class StuffRunner {
    public static void main(String[] args) {
        double x = 0.0d;

        for (int i = 0; i < 100; ++i) {
            Stuff s = new Stuff(x);

            if (s.doStuff() != 4 * x) {
                System.out.print("Error, unexpected value. X=");
                System.out.println(x);
            }

            x = x + 1.22;
        }
    }
}
...