»
Y
A
N
M
E
N
Ü
«
NUnit.Framework.SyntaxHelpers
ibrahim dursun @ 31 Temmuz 2008 19:19

.Net’te test için NUnit’ten başka kütüphane kullanmıyorum. Uzun zamandır da 2.2 sürümünü kullanmaktaydım ve memnundum fakat geçenlerde 2.4 sürümündeki bir özellik dikkatimi çekti. NUnit.Framework.SyntaxHelpers namespace’inin altında testleri daha okunaklı kılacak bir takım yardımcı sınıflar ve metodlar eklemişler, güzel olmuş. Örneğin önceden yazdığımız bu testi:

Assert.IsNotNull(items);
Assert.AreEqual(2, items.Count);
artık şu şekilde yazabiliriz:
Assert.That(items, Is.Not.Null);
Assert.That(items.Count, Is.EqualTo(2));
İşinize yarayabilir.

ReSharper: Konumlanma, Arama, Tarama
ibrahim dursun @ 24 Mart 2008 20:34

Biraz da ReSharper’ın konumlanma, arama tarama özellikleri üzerinden bahsetmek istiyorum. Visual Studio’da bir dosyaya gitmek, bir tipe konumlanmak veya bir dosya içerisinde arama yapmak o kadar zor ve yavaşki Resharper’ın bu özellikleri altın değerinde oluyor. Devam…

ReSharper
ibrahim dursun @ 20 Mart 2008 20:57

Efendim, uzun zamandır yapmak isteyipte bir türlü zaman bulamadığım ReShaper yazı dizisine başlıyorum ziyadesiyle. Öncelikle ReSharper nedir bilmeyen arkadaşları onunla tanışmaya davet ediyorum. Hemen gidip Nightly Buildlerden “Works here” yazanlardan bir tanesini indirip kurun ki anlattıklarımın bir anlamı olsun. ReSharper için kısaca Visual Studio’yu kullanılabilir kılan bir eklenti diyebiliriz. Benzer bir ürün de Developer Express’in CodeRush‘ıdır. Fakat ikisini de tam anlamıyla denedikten sonra sizde benim gibi Developer Express otursun grid yazmaya devam etsin diyeceksiniz. ReSharper’ın belli başlı özelliklerini 4 kategoride toplayabiliriz:

Devam…

Resharper gösterimi
ibrahim dursun @ 14 Ekim 2007 02:47

Resharper, JetBrains tarafından geliştirilmiş bir Visual Studio eklentisinin adı.

Bu eklenti kod yazmayı oldukça kolaylaştıran ve hatta bazı durumlarda olası buglar için bile sizi uyaran mükemmel bir araç. Resharper ile kod yazmanın nasıl olduğunu göstermek için 9 dakika civarında bir video hazırladım. Kullanabildiğim kadar çok özelliği kullanmaya çalıştım. Bazı yerlerde sırf neler önerdiğini göstermek için bilerek hatalı ya da eksik yazdım. Video bittikten sonra birde kendim seyrettim ve size şunu söyleyebilirimki videoda kullandıklarım Resharper’ın yapabildiklerinin sadece %10′u olabilir. Fakat size yinede fikir verir umarım.

Bir de son not olarak yazdığım kodun bir anlamı veya mantığı yok, sadece bir şeyler yazmak için yazdım :)

Videoyu izlemek için buraya tıklayın

Testlerimiz kodumuzun ne kadarını kapsıyor?
ibrahim dursun @ 2 Ekim 2007 20:20

Yazdığımız kodun doğru çalışıp çalışmadığını, istediğimiz özellikleri sağlayıp sağlamadığını testler yazarak garantilemeye çalışırız. Birçok programlama dili için test araçları mevcut, Delphi için DUnit, java için JUnit, .Net için NUnit, MbUnit vs… Fakat yazdığımız bu testlerin kodumuzun ne kadarını test ettiğini, hiç atladığımız durumlar olup olmadığını merak etmiyor musunuz? İşte bunun içinde başka bir araç var ve adı NCover.

Kod Kapsama nedir?

Testlerimizin kodun ne kadarına uğradığını ve dolayısıyla tümüne oranla ne kadarlık kod parçasının testlere dahil olduğunu ölçmek için kullanılan kalite kontrol yöntemi “Code Coverage” (Kod Kapsama) diye adlandırılır.

Kod kapsama ile ne gibi bir ölçüm yaparız?

  • Test senaryolarımız tarafından ulaşılmayan, test edilmeyen kod parçacıklarını tespit edebiliriz
  • Test edilmeyen kod parçalarını da içerecek yeni testler yazabilir ya da eski testlerimizi genişletebiliriz.
  • Gereksiz testleri tespit edip kaldırabiliriz.
  • Aslında hiç kullanmadığımız kod parçacıklarını ayıklayabiliriz
Ben Visual Studio için TestDriven.Net eklentisi kullanıyorum ve bu eklenti ile hazır NCover desteği de geliyor ki işimizi fazlasıyla kolaylaştırıyor. TestDriven.Net, kişisel kullanım için ücretsiz, fakat Visual C# Express Edition kullanıyorsanız bu eklentiden faydalanamazsınız çünkü Express Editionlar eklenti yüklenmesine izin vermiyor. Başka bir alternatif ise JetBrains’in UnitRun‘ı ki bu üründe ücretsiz.

Diyelimki bir tane Registration adında bir DTO sınıfınız ve bu sınıftaki bilgileri doğrulayan RegistrationValidator diye başka bir sınıfız var. Devam…

hbm2ddl
ibrahim dursun @ 21 Nisan 2006 15:18

Ant Script içinde taskdef ile yeni bir görev olarak belittiğiniz hibernatetool taginin içersinde kullanabileceğiniz altgörevlerden birinin adı hbm2ddl. Adı ise ne yaptığını açıklamaya yetiyor: HBM dosyalarını kullanarak bir DDL script oluşturmak.

build.xml scriptine aşağıdaki eklemeyi yapıp

<hibernatetool destdir="src">
   <configuration configurationfile="src/hibernate.cfg.xml">
     <fileset dir="src">
    <include name="*.hbm.xml"/>
 </fileset>
   </configuration>
   <hbm2ddl 
      create="true" 
      update="true" 
      format="true" 
      outputfilename="ddl.sql" 
      delimiter=";" />
</hibernatetool>

çalıştırdığımızda console’da şöyle bir sonuç almamız lazım.

Buildfile: C:\eclipse32\workspace\HibernateTest\build.xml
default:
[hibernatetool] Executing Hibernate Tool with a Standard Configuration
[hibernatetool] 1. task: hbm2ddl (Generates database schema)
[hibernatetool] create table Musteri (ID integer not null, AD varchar(20), SOYAD varchar(20), YAS integer, primary key (ID))
BUILD SUCCESSFUL
Total time: 4 seconds

Gördüğünüz gibi, Musteri tablosunun DDL bizim için hazırlandı.

Ant Script
ibrahim dursun @ 21 Nisan 2006 15:11

Eclipse içinde zaten Ant Script editörü mevcut. Tek yapmanız gereken build.xml adıyla bir dosya oluşturmak ve içeriğini şu şekilde belirlemek:

<?xml version="1.0"?>
<project name="project" default="default">
    <property name="hibernate.path" location="c:/eclipse32/hibernate"/>
    <property name="jaybird.path" location="c:/eclipse32/jaybird"/>
    <taskdef 
        name="hibernatetool" 
        classname="org.hibernate.tool.ant.HibernateToolTask">
        <classpath>
            <fileset dir="${hibernate.path}">
                <include name="*.jar"/>
                    <include name="lib/*.jar"/>
                    <include name="tools/*.jar"/>
            </fileset>
            <fileset dir="${jaybird.path}">
                <include name="*.jar"/>
            </fileset>
        </classpath>
    </taskdef>
    <target name="default" description="açıklama">
        <hibernatetool destdir="src">
            <configuration configurationfile="src/hibernate.cfg.xml">
                <fileset dir="src">
                    <include name="*.hbm.xml"/>
                </fileset>
            </configuration>
        </hibernatetool>
    </target>
</project>

Bu script dosyasını çalıştırmak için üzerine tıklayın Run As > Ant Build... seçeneğini veya editör açıkken Alt+Shift+X,Q kısayol tuşlarını kullanabilirsiniz.

Hibernate Tools ile ilgili detaylı açıklama ve bir el kitabı hibernate.org adresinde mevcut. O yüzden detaylara girmeyeceğim şimdilik.

Kurulum
ibrahim dursun @ 21 Nisan 2006 15:11

Hibernate Tools, eclipse’e plugin olarak hazırlanmış olarak dağıtılıyor. Yani zip dosyası içindeki klasörleri eclipse’in içine kopyaladığınız zaman bu pluginleri kullanmaya başlayabilirsiniz. Ben Ant Script yoluyla bu araçları kullanmayı daha pratik buluyorum o yüzden bir build.xml dosyası hazırlamamız gerekecek. Bunu yapmadan önce indirdiğiniz zip doyasının içinde bulunan plugins\org.hibernate.eclipse_3.1.0.beta4\lib\tools\ klasörünün içindeki tüm jar dosyalarını hibernate’i kurduğunuz klasörün içine tools diye bir klasör altına kopyalayın.

Hibernate Tools
ibrahim dursun @ 21 Nisan 2006 14:15

Şu ana kadar bir java sınıfı, bir veritabanı tablosu ve bir de bunları eşleyen Mapping Doyası (*.hbm.xml) dosyası oluşturduk. Tanım modelimizi (Domain model) geliştirdikçe veya değiştirdikçe tek tek bütün bu dosyalara uygulamamız gerekecek. Bu işlem çok vakit alır ve zaman kaybına neden olur.

Hibernate için hazırladığımız eşleme dosyaları tamamen java sınıfı odaklıdır. Yani bu dosyaları tasarlarken hep java tarafından düşünmeliyiz. Veri tabanı ise sadece bunları saklamak için gerekli ve yeni bir model hazırlarken önemli değildir. İşte bu noktada Hibernate bize Hibernate Tools adıyla bir takım araçlar sunuyor. Bu araçları kullanarak eşleme dosyalarından DDL ve Java sınıflarını otomatik olarak oluşturabilirsiniz.

Kayıtları listelemek
ibrahim dursun @ 20 Nisan 2006 11:15

Kod yazarak kayıtları listelemek istiyorsanız: Session sınıfının createQuery metodunu kullanmanız gerekir. Aşağıdaki örneği inceleyin.

import java.util.Iterator;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;</code>

public class Test1 
{
  public static void main(String[] args) 
  {
    Configuration conf = new Configuration();
    conf.addResource("Musteri.hbm.xml");
    SessionFactory sessionFactory = conf.configure().buildSessionFactory();
    Session session = sessionFactory.openSession();
    List list = session.createQuery("from Musteri").list();
    for (Iterator iter = list.iterator(); iter.hasNext();) 
    {
      Musteri musteri = (Musteri) iter.next();
      System.out.print(musteri.getId()+" ");
      System.out.print(musteri.getAd()+" ");
      System.out.print(musteri.getSoyad()+" ");
      System.out.println(musteri.getYas()+" ");
    }
    session.close();
  }
}

Dikkat ettiyseniz createQuery metodundan sonra list metodunu çağırıyoruz ve sonuç olarak da bize bir List arayüzü (interface) döndürülüyor. Tercihinize göre array(), iterator() metodlarını da kullanabilirsiniz. Eğer dönen kayıtlar üzerinde bir ileri bir geri gidebilmek istiyorsanız scroll() metodunu kullanın.

Parametreli sorgular da hazırlamanız mümkün. Örneğin:

List list = session.createQuery("from Musteri where yas &gt; :yas")
.setInteger("yas", 25)
.list();
Kayıt girmek
ibrahim dursun @ 19 Nisan 2006 15:06

Hibernate mapping açıklamalarına ve örneklerine girmeden hibernate’in neler yapabileceğine dair küçük bir fikriniz olması için küçük bir örnek yazalım.

Öncelikle, yapılandırmada belirttiğimiz veritabanına bağlanıp bir tablo oluşturalım.

create table MUSTERI (
   id integer not null primary key,
   ad varchar(20),
   soyad varchar(20),
   yas smallint 
);

Tablomuzdaki her kayıt bir java sınıfına denk geleceği için Musteri adıyla bir java sınıfı oluşturmamız gerekiyor. Daha sonra bu tablo ile bu sınıfı eşleyeceğiz. Devam…

Yapılandırma (Konfigürasyon)
ibrahim dursun @ 19 Nisan 2006 15:00

Firebird + Hibernate kütüphanelerinin Eclipse’e nasıl ekleneceğini anlatalım:

Eclipse’e alışkın olmayanlar için adım adım neler yapılması gerektiğinden bahsedeceğim. İlk aşamada yapacaklarımız Hibernate ve Jaybird için gerekli JAR dosyalarını Kullanıcı Kütüphanesi (User Library) olarak Eclipse’e eklemek. Devam…

Hibernate
ibrahim dursun @ 19 Nisan 2006 14:59

Hibernate, Java ile yazılmış ve özellikleri itibariyle de Java camiasında kabul görmüş ORM (Object Relation Mapping) katmanıdır. Hibernate, birçok veritabanıyla çalışabilir. Şu an için söyleyebileceklerim Hibernate’in yazılımcı için en büyük avantajı Domain Modelin (Tanım Modelinin) veritabanından soyutlanarak yazılmasına imkan tanımasıdır.

Adım adım Hibernate ile neler yapılabileceğini açıklamaya çalışacağım. Örnekleri denemek ve çalıştırmak için Eclipse kullanın. Konu başlıkları ise aşağıdaki gibi:

Henüz tamamlanmadı ve eklemeler devam edecek (02.03.2008: Eklemeler devam etmeyecek :) )

»  Substance: WordPress   »  Style: Ahren Ahimsa