Junit
Upcoming SlideShare
Loading in...5
×
 

Junit

on

  • 672 views

Junit;

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

Statistics

Views

Total Views
672
Views on SlideShare
671
Embed Views
1

Actions

Likes
0
Downloads
11
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Junit Junit Presentation Transcript

  • JUNIT Muharrem DEMİRmuharremdemir@gmail.com http://demir.me
  • 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
  • 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
  • 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.
  • Ö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
  • Assert •  assertEquals•  assertNotNull•  assertSame•  assertNotSame•  assertTrue•  assertFalse•  assertThatv  assertEquals .equals() ile kontrol ederken assertSame == ile kontrol yapar.
  • 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"); }
  • 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.
  • Ö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 {}
  • Ö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()); }}
  • 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 {}
  • Sorular?