Как считать вызовы метода по экземпляру

Я заметил, что разрешение time.time () отличается от версий Windows 10 Professional и Education.

На машине с Windows 10 Professional разрешение составляет 1 мс. На компьютере с системой Windows 10 разрешение составляет 16 мс.

Я нахожу, что это искусственное ограничение довольно красноречиво (и даже неэтично), особенно если оно не включено в сравнительную документацию Windows, опубликованную Microsoft.

1
задан Luiggi Mendoza 18 January 2019 в 13:34
поделиться

3 ответа

Вы можете использовать Pattern Decorator с интерфейсом Animal и вашим Lion экземпляром:

public class EatingDecorator implements Animal {
  private Animal target;
  private int counter;

  public EatingDecorator(Animal target) {
    this.target = target;
  }

  @Override
  public void eat() {
    target.eat();
    counter++;
  }

  public int getCounter() {
    return counter;
  }
}

, а затем применить его

Animal lion = new EatingDecorator(new Lion());
lion.eat();
lion.eat();
lion.eat();
System.out.println(((EatingDecorator) lion).getCounter()); // 3
0
ответ дан Karol Dowbecki 18 January 2019 в 13:34
поделиться

Вы можете создать тестовый модуль с помощью mockito - вы запускаете тест и реализуете следующий код:

Mockito.verify (mock, times (4)). Send ();

0
ответ дан user10929745 18 January 2019 в 13:34
поделиться

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

используйте следующий код:

public class Lion implements Animal {
    @Override
    public void eat() {
        System.out.println("Lion can eat");
    }
public static AtomicInteger counts = new AtomicInteger(0);
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(Lion.class);
        enhancer.setCallback((MethodInterceptor) (obj, method, args1, proxy) -> {
            counts.getAndIncrement();
            return proxy.invokeSuper(obj, args1);
        });
        Animal lion = (Lion) enhancer.create();
        lion.eat();
        lion.eat();
        lion.eat();

        System.out.println("method called " + counts.get() + " times");
    }
}

зависимость от cglib

    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.2.10</version>
    </dependency>
0
ответ дан TongChen 18 January 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: