Измешивание частной статической переменной с использованием jmockitJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Измешивание частной статической переменной с использованием jmockit

Сообщение Anonymous »

Это может быть очень глупый вопрос, но терпеть меня. >
private static BlobServiceClient BLOB_SERVICE_CLIENT = new BlobServiceClientBuilder()
.connectionString(CONNECTION_STRING)
.buildClient();
< /code>
Теперь проблема заключается в тестировании, существует множество модульных тестовых случаев, которые внутренне называют класс, где эта статическая переменная, и, поскольку статическая переменная загружается в начале программы, это Должен быть высмеивает. Поэтому я использую ожидания, чтобы высмеивать это для модульного тестового примера. < /P>
@Capturing
BlobServiceClientBuilder blobServiceClientBuilder;
@Capturing
BlobServiceClient blobServiceClient;
public void mockBlobServiceClientBuilderStatic(){
new Expectations() {
{
new BlobServiceClientBuilder();
returns(blobServiceClientBuilder) ;
}
{
blobServiceClientBuilder.connectionString(anyString);
returns(blobServiceClientBuilder);
}
{
blobServiceClientBuilder.buildClient();
returns(blobServiceClient);
}
};
}
< /code>
Проблема в том, когда я запускаю весь набор тестовых случаев, он бросает ошибку, говоря, что < /p>
mockit.internal.MissingInvocation: Missing invocation of:
com.azure.storage.blob.BlobServiceClientBuilder#BlobServiceClientBuilder()
on mock instance: com.azure.storage.blob.BlobServiceClientBuilder@361cd35c

at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: Missing invocation
at com.azure.storage.blob.BlobServiceClientBuilder.(BlobServiceClientBuilder.java)
at com.org.proj.someClass.storage.BlobStorageHelperTest$1.(BlobStorageHelperTest.java:33)
at com.org.proj.someClass.storage.BlobStorageHelperTest.mockBlobServiceClientBuilderStatic(BlobStorageHelperTest.java:31)
at com.org.proj.someClass.storage.BlobStorageHelperTest.notALargeCheckTest(BlobStorageHelperTest.java:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:498)
... 6 more
< /code>
Я понимаю, что, когда я запускаю один Testcase, в этом случае JVM статика будет инициализирована с помощью моего макета, но если я запускаю несколько в одном и том же экземпляре JVM, мои марок В каждом тестовом примере избыточно и бросает ошибку. Как мне сделать одновременно счастливым и несколькими тестовыми приложениями счастливыми? работа. Могу ли я каким -то образом проверить, инициализирован ли этот класс, чтобы я мог запустить статический макет, чтобы издеваться над ним, иначе не запустить его, если его высмеивают?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ng-jmockit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»