Your SlideShare is downloading. ×
0
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Junit
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Junit

579

Published on

Junit; …

Junit;
Nedir?
Neye Yarar?
Nasıl Kullanılır?

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
579
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JUNIT Muharrem DEMİRmuharremdemir@gmail.com http://demir.me
  • 2. Nedir? •  Java programlama dili için geliştirilmiş bir test framework•  Erich Gamma ve Kent Beck tarafından geliştirilmiştir.•  Birden fazla IDE ve derlemearacı için desteği vardır. (Eclipse, Netbeans, IntelliJ, maven, ant vb.)²  Erich Gamma; Design Patterns kitabını yazarı, Junit, Eclipse JDT ve Microsoft Visual Studio proje lideri²  Kent Beck; Extreme Programming’nin yaratıcısı ve Agile Manifesto’nun yazarlarından biri
  • 3. Neye  Yarar? •  Test kod tabanının standart olması•  Test ve test suite’leri oluşturulması•  Basit anlamda birim test yapabilmenizi sağlarken, belirli framework entegrasyonları ile karmaşık testleri de kolaylaştırır.•  Örneğin junit.framework.TestCase ile unit test yazabilirken,•  @Runwith(SpringJUnit4ClassRunner.class) kullanarak Spring framework ile entegre çalıştırılması sağlanabilir
  • 4. Birim  Test •  junit.framework.TestCase sınıfını kalıtan bir sınıf içerisinde birim test yazılabilr.•  Birim testlerin koşabilmesi için test metodlarının “test” anahtar sözcüğü ile başlaması gereklidir.•  setUp() metodu ile test öncesi ayarlar ve nesne oluşturma işlemleri yapılabilir.•  tearDown() metodu ile setUp metodundaki ayarları sıfırlayabilirsiniz.•  setUp her test metodu öncesinde, tearDown ise sonrasında birer kez çalıştırılır.
  • 5. Özellikler •  Test metodları public olmalıdır•  Metodlar void dönmelidir•  Herhangi bir parametre almamalıdırpublic void testHede()•  Her test metodu tek bir akış veya birim testi yapmalıdır•  Testlerdeki çıktılar assert* ifadeleri ile kontrol edilmeli ve bu kontrol sonrası test akışı ilerletilmelidir.•  Eğer hata olması durumu söz konusuysa fail() kullanılmalı ve test başarısız sonuçlandırılmalıdır
  • 6. Assert •  assertEquals•  assertNotNull•  assertSame•  assertNotSame•  assertTrue•  assertFalse•  assertThatv  assertEquals .equals() ile kontrol ederken assertSame == ile kontrol yapar.
  • 7. package com.turkcell.singlehub.test.unit; Örnek import org.apache.log4j.Logger;import junit.framework.TestCase;import com.turkcell.singlehub.util.MathUtils;public class MathUtilsTest extends TestCase{ private Logger logger = Logger.getLogger(MathUtilsTest.class); @Override public void setUp(){ logger.debug("run setUp"); } public void testCut(){ double d = MathUtils.cut(1.1234, MathUtils.SCALE_TWO); String result = String.valueOf(d); assertEquals(4, result.length()); } public void testCut2(){ double d = MathUtils.cut(1.1234, MathUtils.SCALE_TWO); String result = String.valueOf(d); assertFalse(result.length() == 5); } public void tearDown(){ logger.debug("run tearDown"); }
  • 8. Entegrasyon  Testi •  Belirli bir akışın veya entegrasyon noktasına ait servisin test edilmesidir.•  Junit, Spring, Hibernate vb. frameworkler ile birlikte çalışabilmektedir.•  Spring context’ini junit ile yüklenmesini sağlayabilir ve herhangi bir uygulama sunucusuna yükleme yapmadan uygulamayı çalıştırabilirsiniz.•  Daha çok annotasyon ile yönetim tercih edilir.•  Method başlangıcında @Test annotasyonu varsa test otomatik olarak çalıştırılır.•  Test öncesinde herhangi bir ayar gerekiyorsa @Before, sonrasında ise @After annotasyonu olan metodlar Junit tarafından otomatik olarak çalıştırılır.
  • 9. Örnek •  @RunWith kullanılarak hangi Junit çalıştırıcı ile testin çalıştırılacağı belirtilir. Burada Spring Framework’ünün Junit için geliştirdiği plugin kullanılmaktadır.•  @ContextConfiguration ile Spring Context’inin hangi xml dosyasından yükleneceği gösterilmektedir.•  Test kodu için farklı context yüklenebileceği için kod tabanındaki context de kullanılabilir. Ancak gerçek ortam kodunda sorun oluşmaması için farklı konfigurasyon dosyası tercih edilmelidir.@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:context-Test.xml"})public abstract class AbstractTest {}
  • 10. Örnek public class InvoiceServiceTest extends AbstractTest { @Autowired private InvoiceService invoiceService; @Test public void hasUnpaidInvoices() { ServiceResult<Boolean> serviceResult = invoiceService .hasUnpaidInvoice(user); Assert.assertNotNull(serviceResult.getValue()); Assert.assertTrue(serviceResult.getValue()); }}
  • 11. Test  Suite •  Test suite kullanarak istediğiniz testlerin birlikte tek bir sınıf üzerinden koşmasını sağlayabilirsiniz.•  Bu durum belirli akışları tek bir akışta çalıştırabilmenizi ve test senaryoları oluşturabilmesini sağlarÖrnek@RunWith(Suite.class)@Suite.SuiteClasses({ InvoiceServiceTest.class, SummaryServiceTest.class, LimitManagementUtil.class, InvoiceServiceUtilTest.class })public final class ProjectRunSuite {}
  • 12. Sorular?

×