Редактировать:
Похоже, мой оригинальный ответ был просто неверным.
NPE исходит из того факта, что абстрактный класс Label
имеет параметр конструктора, который называется name
. Этот параметр используется для вычисления хэш-кода метки.
Если вы поиграете в это, то name
будет null
, и вы получите NPE.
Теперь вопрос в том, нужно ли вам создать макет этого или вы действительно можете использовать реальный экземпляр? В приведенном ниже примере я только что использовал одну из реализаций этого класса LabelAtom
. Если макет требуется, потому что вам нужно определить какое-то поведение на объекте, которое вы не можете получить иначе, вам, вероятно, придется использовать spy
.
(протестировано с org.jenkins-ci.main:jenkins-core:2.85
)
import static org.mockito.Mockito.doReturn;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.modules.junit4.PowerMockRunner;
import com.google.common.collect.Sets;
import hudson.model.Label;
import hudson.model.labels.LabelAtom;
import jenkins.model.Jenkins;
@RunWith(PowerMockRunner.class)
public class Test {
@Mock
private Jenkins jenkins;
private Label label;
@Before
public void setUp() {
Assert.assertNotNull(jenkins);
label = new LabelAtom("someName");
// or if a mock is required
//label = Mockito.spy(new LabelAtom("someName"));
doReturn(Sets.newHashSet(label)).when(jenkins).getLabels();
}
@Test
public void test() {
}
}
Что касается WithOrWithoutExpectedArguments
, я не смог воспроизвести этот.