class B {
@Inject A aInstance;
public void checkValue(){
System.out.println(aInstance.a);
}
}
Belki AspectJ'yi kullanarak sınıf B enjekte edilir, ama ne olur Sanki bir test benim bu bir örneği alacaktır ve B sınıfını kapsayan testi yürütmeden önce "foo" dizesini "foo" olarak ayarlayacaktır, bu yüzden B sınıfı checkValue'yi çağırdığında bu "print" yazacaktır. "
cevap
Sorunuzdaki test kelimesinden bahsediyorsunuz - jUnit testi için B yazıyorsanız, here gösterildiği gibi bir @Before deyiminde enjeksiyonu gerçekleştirebilirsiniz.
private Injector injector;
@Before
public void init() throws Exception {
injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(A.class).to(MockedInstanceOfAWithValueFoo.class);
}
});
}
Ayrıca biz bir biz Aa tanımlamak için kullanılabilecek bir yapıcı olduğunu varsayarsak
bind(A.class).toInstance(new MockedInstanceOfAWithValueFoo());
, alay örneği şöyle görünebilir diyebiliriz:
Yinepublic class MockedInstanceOfAWithValueFoo extends A{
public MockedInstanceOfAWithValueFoo() {
super("foo");
}
}
, alaylı sınıfınızın, B'nin (ve Aa'nın ilgili değeri) daha dinamik olmasını sağlamak için bir kurucu aracılığıyla Aa'nın değerini kabul etmesini sağlayabilirsiniz. Mockito ile
Bu kod derlenmiyor. En azından – paul
oluşturduğum bir alay sınıfı ile Ne bölüm derleme değil? 'MockedInstanceOfAWithValueFoo' sınıfı mevcut değil. Bunu kendin yaratmalısın. A bir arabirim olmadığı için, alay edilen örneğin basitçe A'yı uzatan bir sınıf olacağını ve belki de A.a alanını bir düzenleyici veya kurucudan ayarlayacağını hayal ediyorum. – Hervian
Evet tabiki, kendi mock sınıfımı yaratıyorum. Ama haklıyım, sahte uzantıları uzatmayı unuttum A. Teşekkürler – paul
:
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class MyTest {
@Mock
A mockA;
@InjectMocks
B mockB;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
mockA.a = "Foo";
//when(mockA.getA()).thenReturn("Foo"); //if you use getter
}
@Test
public void myTest() {
assertNotNull(mockA);
assertNotNull(mockA.a);
assertNotNull(mockB);
assertNotNull(mockB.ainstance);
mockB.checkValue();
}
}
olduğu için o kadar kolay olmayacak çünkü ben bir ünite testi değil, bir BBD testi – paul
- 1. 'Async <string []>' türü 'seq <'a>'
- 2. Ekstralar: Tıklamada bağlantıyı değiştir (<a>) '
- 3. <a> etiketi
- 4. Python nasıl</p> <pre><code>['a 1 a', 'a 2 a', 'a 3 a', 'a 4 a'] </code></pre> <p>teşekkür ederiz yazdırmak için ben alırım bütün desenleri
- 5. Marshal a java.util.Map <String, Dize>
- 6. Bu garip koşullu operatör sözdizimi nedir?</p> <pre><code>bool bRes = (a < b) ? a=b, true : false; </code></pre> <p><code>a < b</code>, o zaman <code>a=b</code> infaz ve <code>bRes</code> doğrudur edilir:
- 7. <a href.. in PHP
- 8. Git, <<<<<<< HEAD dosyasına
- 9. Referans 'bu' bir <a> etiketi
- 10. C++ 11 agrega başlatma:</p> <pre><code>struct A { int a = 3; int b = 3; }; A a{0,1}; // ??? </code></pre> <p>bu sınıf hala toplamak mı? <code>clang</code> bu kodu kabul eder, ancak <code>gcc</code> yapamaz.
- 11. - değil <a href>
- 12. Neden powershell() bazen çalıştırdığım kodu yazdırıyor?</p> <pre><code>function f { $a=2 } $a </code></pre> <p>O yazdırır:</p> <pre><code>C:\Users\vics> function f { $a=2 } $a </code></pre> <p>Neden bu kadar weired ben varsa
- 13. Haritaya <Eşleme <String, Dize>
- 14. SEO: <button> vs <a> HTML etiketleri
- 15. Bu haskell sözdizimi nedir?</p> <pre><code>data A = A Int Int | B m :: A -> Int m a = case a of A{} -> 1 _ -> 2 </code></pre> <p>burada ne <code>A{}</code> nedir -
- 16. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 17. <Func <T, string>>
- 18. Bir Tuple <string, string, Func <bool>>
- 19. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 20. Java - anahtarı Hashmap <Sınıfı, ArrayList <Class>>
- 21. ICollection <string> string []
- 22. Java i 2 farklı sınıflar</p> <pre><code>public class A { String name; int A1; int A2; } </code></pre> <p>ve diğer sınıf
- 23. ArrayList <HashMap <String, String >> String []
- 24. Sadece GET Metodu içinde geçen değeri ile çalıştı <a href="https://phpexcel.codeplex.com/">phpexcel</a></p> <p>dan php
- 25. Swift'de bir ebeveyn/süper sınıfa nasıl başvuru yapılır? <code>A</code> Bu örnekte <code>B</code> devralır</p> <pre><code>class A { } class B:A { } </code></pre> <p>:
- 26. bir projede klasörleri</em> görmezden <a href="http://www.jetbrains.com/phpstorm/" rel="noreferrer"><strong><code>PhpStorm</code></strong></a><em>için anlarım nasıl PhpStorm
- 27. Bash'taki alıntılar nasıl kaçar?</p> <pre><code>a="\"Google Chrome\"" </code></pre> <p>ve ben <pre><code>a="'Google Chrome'" </code></pre> <p></p> ama hiçbir gitmek çalıştı:
- 28. </p> <pre><code><a [routerLink]="['/LoggedIn/Profile']">Static Link</a> </code></pre> <p>herşey iyi çalışıyor, RouterLink dinamik
- 29. Ben span etiketi etiketi içinde olması gerekir beri aşağıdaki kodu</p> <pre><code><li class="iAdd"><a href="add"><span>Add Cuisine</span></a></li> </code></pre> <p>için CakePHP HTML Bağlayıcı kullanmaya çalışıyorum bağlantı
- 30. aynı modülde</strong> bir sınıf</p> <pre><code>class Foo(): def some_method(): pass </code></pre> <p>Ve başka sınıf <strong>var
aynı InstanceOf 'çalışması gerekir A' alırsanız. Bu kadar iyi bilmiyorum ama sanırım CDI gibi bir çeşit kapsamı var, yani muhtemelen bir sınıfın aynı örneğini çoklu enjeksiyon hedeflerine enjekte edebiliyor. – Thomas
Çerçeve alay etmek için bir görev gibi geliyor. Bkz. Mockito: http://mockito.org/ – nukie