PowerMock kullanarak birden çok sınıftan statik yöntemleri modelleyin


104

PowerMock kullanarak bir sınıftan statik yöntemlerle nasıl alay edileceğini biliyorum.
Ancak JUnit ve PowerMock kullanarak bir test sınıfındaki birden çok sınıftan statik yöntemlerle alay etmek istiyorum.

Biri bana bunu yapmanın mümkün olup olmadığını ve nasıl yapılacağını söyleyebilir mi?


1
Tek tek sınıflardan yöntemlerle alay ettiğiniz gibi yaparsınız. Nerede sıkıştın
artbristol

Powermock kullanırken, bu ek açıklamayı @PrepareForTest (ClassThatContainsStaticMethod.class) test sınıfına eklemeniz gerekir. Ancak birden fazla açıklama belirtemiyoruz. Peki bunu nasıl yapmalı?
Çaylak

Yanıtlar:


259

Sadece @PrepareForTest({Class1.class,Class2.class})birden fazla sınıf için yapın.


11
küme parantezleri! benim özlediğim buydu.
sudocoder

2
Ayrıca @RunWith(PowerMockRunner.class)sınıf düzeyinde
Nikita Barishok

1
@NikitaBarishok her zaman gerekli değildir. Bunun yerine bir kural tanımlayabilirsiniz -@Rule public PowerMockRule rule = new PowerMockRule();
Aniket Thakur

5
in kotlin@PrepareForTest(Class1::class, Class2::class))
Ryhan

Bunun @PrepareOnlyThisForTestyerine kullanmak daha iyidir @PrepareForTest. İkincisi, normalde gerekli olmayan süper sınıfları da değiştirir.
www.Decompiler.com

12
@Test
 @PrepareForTest({Class1.class, Class2.class})
 public final void handleScript() throws Exception {
    PowerMockito.mockStatic(Class1.class);
    PowerMockito.mockStatic(Class2.class);

vb...


Gelince PowerMock 1.6.5kullanarak sorunlar var @PrepareForTest(sadece benim için sınıf düzeyinde çalışır) yöntemi düzeyde
Nikita Barishok

2

Powermock / junit ile java'da,@PrepareForTest({}) array ( {}) olarak istediğiniz kadar çok statik sınıfla kullanın .

@RunWith(PowerMockRunner.class)
@PrepareForTest({XmlConverterA.class, XmlConverterB.class})
class TransfersServiceExceptionSpec {

}

Ben kullandım , scala / JUnit ile powermock scalatest powermock ile entegrasyon olmadığı için.

@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB]))
class TransfersServiceExceptionSpec {

  @Test
  def test() {
  }
}

1

Kotlin kullanıyorsanız, sözdizimi bu

@PrepareForTest(ClassA::class, ClassB::class)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.