установка this.updateTime, но при запуске теста выдается исключение NullPointerException - PullRequest
0 голосов
/ 31 января 2020

У меня есть это в моем тесте:

final MockKeyReader mockReader = (MockApiKeyReader) getKeyReader();
mockReader.setUpdateTime(100L);

MockKeyReader имеет этот метод:

public void setUpdateTime(final Long updateTime) {
  this.updateTime = updateTime;
  }

Я думал, что, поскольку setUpdateTime устанавливает значение this.updateTime, когда mockReader.setUpdateTime(100L); выполнено, оно будет доступно, когда класс, который я пытаюсь проверить, ищет его. Я неправильно понимаю, как работает this

Эта строка вызывает исключение:

if (!this.updateTime.equals(ProductionBlocking
          .get(this.keyReader.updateTime(this.config.configId.toString(),
              keyType.PLUSSTAR)))) {

Я только что понял, что пытаюсь сравнить два Longs с .equals(). Я изменил строку на:

if (this.updateTime != ProductionBlocking
          .get(this.keyReader.updateTime(this.config.configId.toString(),
              keyType.PLUSSTAR))) {

Хотя проблема остается. И this.updateTime, и ProductionBlocking .get(this.keyReader.updateTime(this.config.configId.toString(), keyType.PLUSSTAR)) null

Я ожидал, что mockReader.setUpdateTime(100L); установит this.updateTime в setUpdateTime, но этого не произошло.

У меня такое чувство тонкий может неправильно понять с моей стороны.

ProductionBlocking .get(this.keyReader.updateTime(this.config.configId.toString(), keyType.PLUSSTAR)) использует интерфейс ApiKeyReader, и MockApiKeyReader - это издевательство над этим.

...