Angående status på bloggen

08 januari 2012 kl. 9:40 f m | Publicerat i Nyheter | Lämna en kommentar

Som ni kanske märkt har aktiviteten på bloggen varit ytterst låg. Jag har inga planer att skriva nya inlägg till bloggen, men den kommer finnas kvar, då den har många hjälpsamma inlägg. För er som är intresserade bloggar jag på nils-fredrik-karlsson.se/blogg.

Det är inte uteslutet att jag i framtiden skriver fler inlägg, så bloggen är inte helt dödsförklarad. Men den har hittills dragit på sig mer än 30 000 besökare och lever på egen hand.

Bloggstatistik 30/06-11

30 juni 2011 kl. 9:46 e m | Publicerat i Bloggstatistik | Lämna en kommentar

Här visar vi de inlägg som är mest populära på bloggen just nu. Efter varje rubrik listar vi i parenteser vilken placering inlägget hade senast vi bloggade statistik (13 mars). Bindestreck betyder att inlägget inte fanns med i senaste mätningen och är alltså ny på listan.

  1. Hantera sidnumrering i OpenOffice Writer (1)
  2. Ändra filassociationer i Windows 7 (2)
  3. Grundläggande sorteringsalgoritmer förklarade: Bubble Sort (NY)
  4. Reguljära uttryck: Regexp med Java (3)
  5. Hur man ändrar startup program i Windows XP (4)

Placering 6-10 visas här utan länkar:

6. Läsa från och skriva till textfiler i Java (5)
7. Grundläggande objektorientering i Java: Gränssnitt och abstrakta klasser (6)
8. Grundläggande objektorientering i Java: Arv och subklasser (8)
9. Grundläggande objektorientering i Java: Konstruktorer och metoder (NY)
10. Grundläggande programmeringskoncept förklarade: Strängar och fält (arrays) (10)

Inlägget om sorteringsalgoritmen Bubble Sort är helt ny, utöver inlägget om konstruktorer och metoder i Java.

Alpha-versionen av PHP 5.4 släppt

30 juni 2011 kl. 12:04 f m | Publicerat i PHP | Lämna en kommentar

Den första alpha-versionen av PHP 5.4 har nu släppts och finns att ladda ner här.

De största förändringarna i denna version är traits, array dereferencing, stöd för DTrace, optimerad Zend Engine, m.m. Du kan läsa mer om de olika ändringarna i detta dokument.

Traits är en utökning av den objektorienterade modellen – det är en uppsättning av metoder som kan implementeras direkt i traiten. Detta till skillnad från gränssnitt, som endast beskriver hur metoderna ska se ut.

Traits är alltså ett sätt att hantera problemet med multipla arv. Rent tekniskt liknar de mixins (som finns i exempelvis Ruby).

Jag har tidigare skrivit om traits i Scala här. För en utmärkt inledning till traits i PHP så hänvisar jag till den här sidan.

Sammanfattning över de 20 första länktipsen

03 april 2011 kl. 2:45 e m | Publicerat i Lästips | Lämna en kommentar
Etiketter: ,

Här följer en sammanfattning över de 20 första länktipsen som du finner under kategorin Länktips.

Länkarna nedanför leder direkt till hemsidan, och alltså inte till själva tipset.

  1. TIOBE Programming Community Index – Mäter populariteten av programmeringsspråk.
  2. Lönebarometern (CS Jobb) – Sammanfattning av hur mycket man kan tjäna i diverse IT-yrken.
  3. Tinkernut – Video blog som i likhet med denna blogg lär ut allt som har att göra med IT att göra.
  4. QuirksMode – Undersöker hur bra de stora webbläsarna följer standarder.
  5. CollegeHumor – Humor? Ja visst! Har både artiklar och filmer.
  6. Rubular – En webapplikation för att testa sina regexp-uttryck mot.
  7. oreilly – Den största försäljaren av IT-böcker.
  8. MySQL Performance Blog – Blogg som handlar om MySQL och mer specifikt hur dess databaser uppträder prestandamässigt.
  9. CubeStat – Räknar ut värdet av domäner omräknat till dollar.
  10. WebWait – Benchmarkar en hemsida.
  11. Ninite – Installera en uppsättning populära applikationer på en och samma gång.
  12. Can You Run It – En tjänst som mäter datorns prestanda för att avgöra om du kan köra en specifik produkt.
  13. xkcd – En serie som beskrivs som ”a webcomic of romance, sarcasm, math, and language”.
  14. Cheat-sheets.org – Samlade programmeringsresurser.
  15. stackoverflow – En plats för programmerare att ställa frågor och svara på frågor enligt ett poängbaserat system.
  16. The Daily WTF – Alla stunder av WTF som rör programmering och IT i allmänhet finns samlade här.
  17. w3schools – En outtömlig källa av information till de största webbteknikerna idag.
  18. DatorMagazin – Svensk datormagasin som även finns som hemsida. Ungefär som PC för Alla, men för den mer avancerade användaren.
  19. KnowYourMeme – Alla internets memes samlade på ett och samma ställe.
  20. DistroWatch – Omfattande sammanfattning av förekommande Linux-distributioner.

Veckans länk #20: DistroWatch.com

21 mars 2011 kl. 1:41 f m | Publicerat i Lästips | Lämna en kommentar
Etiketter: , ,

Den tjugonde länken – DistroWatch.com – är kanske inte den snyggaste hemsidan i världen, men kanske den mest omfattande sammanfattningen av tillgängliga Linux-distributioner.

I mitten hittar du information om de senaste distributionerna.

Längst uppe kan du söka på distributioner antingen efter namn eller från en lista över tillgängliga distributioner.

Till höger hittar du de mest populära distributionerna (i skrivande stund Ubuntu och Mint).

Hemsidan är kanske inte ett bra exempel på en elegant webbdesign, men innehållet är det viktigaste.

Finns på ett antal olika språk, däribland svenska.



Veckans länktips #20: DistroWatch.com

Veckans länktips #20: DistroWatch.com

Har du några tips på bra hemsidor? Lämna då gärna en kommentar i kommentarsfältet eller skicka dem till ToggleOnBlog@gmail.com

Tidigare veckans länk:
#15. stackoverflow.com
#16. The Daily WTF
#17. w3schools.com
#18. DatorMagazin.se
#19. KnowYourMeme.com

Kom igång med att utveckla för Android SDK och Eclipse: Installera, konfigurera, och emulera

15 mars 2011 kl. 8:45 e m | Publicerat i Java, Smartphoneutveckling | Lämna en kommentar
Etiketter: , , , , ,

I detta inlägg skall vi komma igång med utveckling för Android SDK. Vi kommer att genomföra dessa steg:

  • Installera Android SDK och ADT
  • Konfigurera Eclipse att fungera med Android SDK
  • Skriva ett kort kodexempel och ladda upp till emulator

Vi kommer förutsätta att du redan har Java JRE/SDK och Eclipse for Java Developers installerat. Om du inte har Eclipse installerat, kan du hitta det här.

Här är en lista över rubrikerna så som de förekommer i det här inlägget:

Installera Android SDK

Den senaste versionen av Android SDK kan du finna här.

Om du kör Windows rekommenderas det att du laddar ner exe-installeraren.

Notera: programmet upptäckte först inte att SDK fanns. Då är det bara att klicka på Back och sedan Next. Förhoppningsvis skall den då ha detekterat att Java SDK finns installerat.

Det är bara att följa stegen i installern. Den kommer då fråga om du vill starta en Android SDK Manager. Svara Ja och vänta på ett nytt fönster kommer upp.

Den kommer då installera ett antal paket. Välj accept och klicka på Install. Det kan ta ett tag att installeras, så detta är ett bra tillfälle att ta en kopp kaffe och stirra på skärmen.

Android: installerar arkiv

Android: installerar arkiv

Installera ADT plugin för Eclipse

Nästa steg är att installera ADT (Android Development Tools) plugin för Eclipse. Denna plugin gör det möjligt att skapa nya Android-projekt, skapa UI:er, debugga, och så vidare.

För att detta skall fungera så måste Eclipse vara kompatibelt med Android SDK och ADT. En lista över kompatibla versioner finner du här.

Följ dessa enkla steg:

  1. Starta Eclipse.
  2. Välj Help > Install New Software
  3. Klicka på Add.
  4. Skriv in ”ADT Plugin” som name och under Location skriver du in:
    https://dl-ssl.google.com/android/eclipse/
  5. Klicka på OK.
  6. Nu bör det dyka upp ”Developer Tools” i panelen i mitten. Bocka i denna och klicka på Next.
  7. På nästa sida finns installationsdetaljer. Klicka på Next.
  8. Läs igenom licensen (om du vill/orkar) och bocka i att du accepterar. Klicka på Finish.

Eclipse kommer nu att hämta hem mjukvaran. När den är färdig så kommer Eclipse  behöva startas om.

Konfigurera Eclipse

När du har startat om Eclipse bör det nu finnas ett extra menyval under Window som heter Android SDK and AVD Manager. Innan vi kan komma åt denna behöver vi sätta preferenser.

Gå därför istället till Window > Preferences. Välj Android. Till höger bör nu finnas preferenser för Android. Vi måste välja var Android SDK finns installerat. Klicka därför på Browse och leta fram var du har det installerat.

På mitt system fanns det under C:\Program\Android\android-sdk, men kan variera från system till system. När du har hittat android-sdk så klickar du på Apply. Listan med SDK Targets bör nu autofyllas med ett antal targets. Om detta inte händer så har du förmodligen letat fram fel katalog.

Klicka på OK.

Android: Preferenser

Android: Preferenser

Nu kan du välja Window > Android SDK and AVD Manager. Du bör nu få upp en lista över virtuella enheter. Dessa enheter är de emulatorer som kommer användas för att ladda upp kod till.

Om du inte har någon virtuell enhet kan du klicka på New. Ge enheten ett godtyckligt namn. Under target väljer du vilken version av Android SDK som skall användas. Om du planerar att utveckla för tablets så väljer du Android 3.0, som är speciellt framtaget för att utvecklas med tablets. Annars kan du nöja dig med 1.5 eller 1.6 för de kodexempel vi kommer visa här. Klicka på Create AVD.

Android: Skapa en AVD

Android: Skapa en AVD

Skapa projekt och kodexempel

Skapa ett nytt projekt genom att klicka på File > New > Project. Välj Android > Android Project. Klicka på Next.

I nästa fönster skall du fylla i egenskaper för projektet.

Det första är projektnamnet. Skriv in ”hello_world”.

Under contents kan du skapa ett nytt projekt eller skapa från existerande källa. Bocka i ”Create new project in workspace”.

Under Build Target väljer du vilken version av Android SDK som skall köras. Bocka i Android 1.5 (kom ihåg att denna version skall matcha mot den virtuella enhet som vi tidigare skapade).

Till sist skall vi fylla i egenskaper. Under application name kan vi skriva in ”HelloWorld”.

Under package name kan vi skriva in ”org.example”.

Create Activity skall vara bockat och innehålla ”HelloWorldActivity”.

Min SDK version kan vi strunta i just nu. Den skall alltså inte ha något värde.

Klicka på Finish.

Android: Skapa ett projekt

Android: Skapa ett projekt

I paketutforskaren (eng. package explorer) till vänster bör nu projektet finnas listat. Navigera dig fram till hello_world > src > org.example > HelloWorldActivity.java. Öppna denna fil.

Här finner du en del intressant kod. Vi kommer lägga till en rad kod så att koden kommer se ut så här:

package org.example;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Toast.makeText(this, "Hello world!", Toast.LENGTH_LONG).show();
    }
}

Om den klagar på att den inte känner igen Toast kan du trycka ned Ctrl + Shift + O. Detta kommer lägga till alla nödvändiga import-satser.

Ladda upp kod till emulator

Då är vi framme till det sista steget: att ladda upp koden till emulatorn. Detta är förhållandevis enkelt.

Klicka på Run (Ctrl + F11). Välj Android Application från Run As. Klicka på OK.

Emulatorn kommer nu att köras igång. Det tar ett tag för systemet att starta upp. När systemet har kommit igång så kommer den paketerade koden att laddas upp och installeras.

Om du vill se programmet igen är det bara att klicka på Run-knappen i Eclipse igen (detta kommer ladda upp den senaste versionen av koden).

Hello World! Hallelujah!

Hello World! Hallelujah!

Utveckling för hårdvaruenheter

Om du vill ladda upp koden till din fysiska smartphone behöver du konsultera denna sida. Här finner du hur du går till väga för att aktivera utveckling genom att dels ändra i androids manifestfil och dels göra nödvändiga ändringar i telefonen.

Läs vidare

Här är en lista över sidor där du kan hitta mer information om var du kan lära dig mer.

Har du några kommentarer kring detta inlägg eller Android i allmänhet? Lämna då gärna en kommentar i kommentarsfältet eller skicka iväg ett mejl till ToggleOnBlog@gmail.com.

Bloggstatistik 13/03-11

13 mars 2011 kl. 1:24 f m | Publicerat i Bloggstatistik | Lämna en kommentar
Etiketter:

Här visar vi de inlägg som är mest populära på bloggen just nu. Efter varje rubrik listar vi i parenteser vilken placering inlägget hade senast vi bloggade statistik (01 november). Bindestreck betyder att inlägget inte fanns med i senaste mätningen och är alltså ny på listan.

  1. Hantera sidnumrering i OpenOffice Writer (1)
  2. Ändra filassociationer i Windows 7 (1)
  3. Reguljära uttryck: Regexp med Java (3)
  4. Hur man ändrar startup program i Windows XP (4)
  5. Läsa från och skriva till textfiler i Java (5)

Placering 6-10 visas här utan länkar:

6. Grundläggande objektorientering i Java: Gränssnitt och abstrakta klasser (6)
7. Installation av Eclipse Galileo för C++, MinGW och SDL i Windows XP (8)
8. Grundläggande objektorientering i Java: Arv och subklasser (9)
9. Kom igång med att paketera ditt program i JAR-filer (7)
10. Grundläggande programmeringskoncept förklarade: Strängar och Fält (Arrays) (10)

Analys
Ytterst lite har ändrats sedan senaste bloggstatistiken. De fem första har inte ändrats alls. Tre av inläggen från 6-10 har ändrats, men ytterst litet. Inga nya inlägg har tillkommit.

#9 har tappat plats från 5 till 7 och nu alltså till 9. Det är möjligt att vi ser ett nytt inlägg i listan till nästa gång.

Nästa mätning kommer göras i början av maj.

Det bästa sättet att spendera en fredag på

20 februari 2011 kl. 8:44 e m | Publicerat i Personligt | Lämna en kommentar
Etiketter:

Vilket är det bästa sättet att spendera en fredag på? Är det att sitta och mysa framför teven? Gå på bio? Gå ut med vänner på krogen?

Eller är det att städa upp i köket efter att en flaska ketchup slagit i golvet, spruckit, och ketchupsplatter över halva rummet?

Ja, ni vet kanske vad jag försöker säga. En av hyllorna i kylen var lite klen och kollapsade. Och så råkade det ligga en ketchup i den. Som det kan gå.

Nu till någonting helt orelaterat.

Några kanske undrar varför det är så tyst på bloggen. Det är inte så att jag inte har något att skriva om. Däremot har jag varit väldigt upptagen den senaste månaden (sen terminen började igen faktiskt).

Just nu är jag involverad i tre projekt och även några mindre personliga projekt, samtidigt som jag läser en ganska tung kurs om processprogrammering och operativsystem.

Jag kan inte säga så mycket om projekten just nu, men det kommer. Jag kan däremot säga att ett av projekten har att göra med smartphone-programmering, och ett annat så utvecklar jag en sökmotor mot en extern webbtjänst. Allt som allt blir det väldigt mycket att göra, men även mycket kul att göra!

Tyvärr måste jag prioritera dessa, vilket gör att bloggen blir lidande. Men som jag brukar säga så ägnar jag den fritid jag har till att skriva nya blogginlägg.

Ni läsare fortsätter besöka bloggen och för varje månad växer antalet besökare. Det är riktigt kul att se att det blir fler och fler besökare.

Jag har några planerade inlägg på lager. Bl a nya veckans programtips och länktips. Bloggstatistik skall också upp snart. Det kanske största blir ett inlägg som visar hur man går till väga för att installera, konfigurera och köra Android SDK i Eclipse.

Nu är det kallt och snöigt ute. Men solen sken både igår och idag. Med tiden försvinner snön. Det får vi se fram emot.

På återseende.

Open Source: CodeSpark

30 januari 2011 kl. 6:38 e m | Publicerat i Egna projekt, Open Source | Lämna en kommentar
Etiketter: , , , , ,

CodeSpark är ett projekt som inkluderar resurser till CodeIgniter, i form av libraries, helpers, plugins, osv.

För närvarande finns det ett begränsat antal filer tillgängliga, men mer planeras att läggas till. Bland de mer välutvecklade resurserna finns bl.a. Breadcrumbs (tillgänglig i libraries) och admin_helper (tillgänglig i helpers).

Dessa filer går att ladda ner här.

Det går även att checka ut filerna från svn med följande rad:

svn co https://codespark.svn.sourceforge.net/svnroot/codespark system/application

Det huvudsakliga sättet att stödja projektet är genom att lägga till s.k. feature requests. Det går förstås att stödja projektet på andra sätt, genom att exempelvis skicka in potentiella buggar, patches, m.m.

Du finner mer information om support här.

Om du vill bli del av utvecklarteamet kan du mejla ToggleOnBlog@gmail.com.

Har du något eget Open Source projekt eller känner du till något Open Source projekt som du vill ska synas här? Lämna då gärna en kommentar i kommentarsfältet eller skicka iväg ett mejl till ToggleOnBlog@gmail.com.

Skapa enhetstest i CodeIgniter

28 januari 2011 kl. 8:12 f m | Publicerat i PHP, Webbprogrammering | 1 kommentar
Etiketter: , , , , , , ,

I detta inlägg ska vi undersöka hur man går till väga för att skapa enhetstest i CodeIgniter.

För den som inte är bekant med CodeIgniter är det ett webbramverk för PHP-programmerare. Vi har tidigare på bloggen skrivit om CodeIgniter här. Där står det hur du kommer igång med CodeIgniter.

Mer specifikt kommer vi i det här inlägget att:

  • Förklara vad enhetstest är och varför de är viktiga
  • Hur man kan skapa enkla enhetstest
  • Mer avancerade tillval för att skapa enhetstest
  • Hur man går till väga för att räkna antalet lyckade och misslyckade genomförda enhetstester.

Vi kommer utgå från att CodeIgniter 1.7.2 eller senare är installerat.

Vad är enhetstest?

Enhetstest (eng. unit test) är ett sätt att testa en enskild enhet, i form av en klass, funktion, eller något dylikt. Syftet med enhetstestet är att undersöka om en viss indata ger korrekt utdata. Fördelen med detta är att det försäkrar (så långt det går) programmeraren om att en enhet håller hög kvalitet.

Enhetstest i CodeIgniter

Enhetstest i CodeIgniter finns inbyggt i form av bibliotek.

Gå till system > libraries och öppna Unit_test.php. Ha denna fil öppen, eftersom vi kommer behöva den filen i sista steget.

Öppna en valfri controller. Här kommer vi använda controllern Site som exempel.

Det första vi behöver göra är att ladda in biblioteket för Unit_test. Detta gör vi med:

$this->load->library('unit_test');

När vi har laddat in detta bibliotek är vi redo att börja skriva enhetstester.

För att testa en enhet anropar vi funktionen run(). Som parametrar tar den emot:

  • Vad som skall testas (t.ex. ett funktionsanrop eller uttryck).
  • Förväntat resultat från det som testas.
  • Namnet på eller en förklarande text till enhetstestet.

Detta illustreras bäst med ett exempel. Vi testar ett vanligt aritmetiskt uttryck. Därefter anropar vi run(), som returnerar en rapport i form av en HTML-tabell som vi kan skriva ut.

class Site extends Controller {
        function index() {
            $this->load->library('unit_test');
            $test = 1 + 1;
            $expected_result = 2;
            $test_description = "Add one and one";
            echo $this->unit->run($test, $expected_result, $test_description);

            $test2 = 2 + 2;
            $expected_result2 = 4;
            $test_description2 = "Add two and two";
            echo $this->unit->run($test2, $expected_result2, $test_description2);
        }
}

Resultatet visas i illustrationen nedanför:

Enklare enhetstest i CodeIgniter

Enklare enhetstest i CodeIgniter

Generera rapporter

Istället för att anropa run() och skriva ut dem kan vi exekvera alla enhetstest med run() och därefter anropa report() för att få ut en fullständig rapport. Koden ovanför skulle i sådana fall se ut så här:

            $this->load->library('unit_test');
            $test = 1 + 1;
            $expected_result = 2;
            $test_description = "Add one and one";
            $this->unit->run($test, $expected_result, $test_description);

            $test2 = 2 + 2;
            $expected_result2 = 4;
            $test_description2 = "Add two and two";
            $this->unit->run($test2, $expected_result2, $test_description2);

            echo $this->unit->report();

Istället för att skriva ut det run() returnerar så skriver vi helt enkelt ut det som returneras från report(), vilket är samtliga enhetstest. Resultatet av detta blir densamma som i föregående kodexempel.

Strict Mode

Enhetstester i CodeIgniter testar inte datatyper mot varandra. Följande test

            $this->unit->run(1, TRUE);

kommer passera, eftersom 1 och TRUE anses vara likvärdiga. Om värden så väl som datatyper skall testas måste strict mode aktiveras. Följande test

            $this->unit->use_strict(TRUE);
            $this->unit->run(1, TRUE);

kommer misslyckas, eftersom 1 och TRUE inte anses vara likvärdiga, då de har olika datatyper.

Antal lyckade och misslyckade enhetstest

[Denna del av inlägget är till för mer avancerade användare av CodeIgniter]

Det finns inget direkt sätt att hämta antal lyckade och misslyckade enhetstest i CodeIgniter.

Däremot går det att hämta rådata med funktionen result(). Detta returnerar en array där resultatet av alla enhetstester finns samlade. Mer specifikt finns nycklar med namnet ”result”. Dessa kan ha värdet ”failed” eller ”passed”. Om vi räknar dessa kan vi få ut hur många test som lyckades och hur många som misslyckades.

Då har vi två designval att utgå från:

  1. Antingen går vi in i klassen Unit_test direkt och lägger in funktioner för att räkna antal lyckade och misslyckade test, eller så
  2. Anropar vi metoden result() utanför klassen Unit_test och hanterar den array vi får tillbaka.

Nackdelen med första alternativet är att om vi uppgraderar från 1.7.2 till 1.7.3 av CodeIgniter så försvinner vår kod, om vi inte manuellt går in och lägger in den igen. Fördelen med första alternativet är att det känns mer intuitivt att använda. Det känns givet att en enhetstestklass har enkel funktionalitet för att hämta antal lyckade och misslyckade enhetstester.

Vi kan lösa detta på ett antal sätt. Vi kan t.ex. skapa en helperfunktion som laddar in Unit_test och anropar result(). Här kommer vi i istället utgå från ett annat alternativ: ärva från Unit_test och lägga in våra funktioner.

Börja med att gå till katalogen system/application/libraries. Skapa en ny fil och ge den namnet MY_Unit_test.php. Den ska till att börja med innehålla:

class MY_Unit_test extends CI_Unit_test {
    function MY_Unit_test() {
        parent::CI_Unit_test();
    }
}

Vi låter MY_Unit_test ärva från CI_Unit_test. Från konstruktorn för MY_Unit_test anropar vi konstruktorn till superklassen.

Vad vi vill göra är lägga in en funktion för att iterera genom resultatet, räkna antal förekomster av lyckade/misslyckade enhetstester, och returnera detta. Funktionen för detta ser ut så här:

    function _get_result($key_arg, $val_arg) {
        $count = 0;
        foreach($this->results as $index => $first_array) {
            foreach($first_array as $index2 => $second_array) {
                foreach($second_array as $key => $val) {
                    if ($key == $key_arg && $val == $val_arg) {
                        $count++;
                    }
                }
            }
        }
        return $count;
    }

Som inargument tar funktionen emot dels namnet på nyckeln, och dels namnet på värdet som vi ska testa mot.

Vi itererar genom $this->results där resultaten av alla enhetstester finns sparade. För att komma åt den viktiga arrayen måste vi iterera genom tre arrayer. I den innersta arrayen kollar vi om nyckeln och värdet stämmer. Om det gör det så räknar vi upp $count, som vi returnerar i slutet av funktionen.

Nu kan vi konstruera två funktioner, kallade passed_tests() och failed_tests() för att räkna antal lyckade/misslyckade test. Dessa funktioner ser ut så här:

    function passed_tests()
    {
        $passed = $this->_get_result("result", "passed");
        return $passed;
    }

    function failed_tests()
    {
        $failed = $this->_get_result("result", "failed");
        return $failed;
    }

Vad dessa funktioner gör bör vara självklart.

Den färdiga klassen ser ut så här:

class MY_Unit_test extends CI_Unit_test {
    function MY_Unit_test() {
        parent::CI_Unit_test();
    }

    function _get_result($key_arg, $val_arg) {
        $count = 0;
        foreach($this->results as $index => $first_array) {
            foreach($first_array as $index2 => $second_array) {
                foreach($second_array as $key => $val) {
                    if ($key == $key_arg && $val == $val_arg) {
                        $count++;
                    }
                }
            }
        }
        return $count;
    }

    function passed_tests()
    {
        $passed = $this->_get_result("result", "passed");
        return $passed;
    }

    function failed_tests()
    {
        $failed = $this->_get_result("result", "failed");
        return $failed;
    }
}

När vi sedan ska ladda in denna klass så skriver vi inte in $this->load->library(‘MY_Unit_test’). När vi skapar en utökad variant av en inbyggd klass och anropar load så kommer den egendefinierade klassen att laddas in. Detta förtydligas av exemplet nedanför, där vi använder vår egendefinierade klass:

            $this->load->library('unit_test');
            $test = 1 + 1;
            $expected_result = 2;
            $test_description = "Add one and one";
            $this->unit->run($test, $expected_result, $test_description);

            $test2 = 2 + 2;
            $expected_result2 = 4;
            $test_description2 = "Add two and two";
            $this->unit->run($test2, $expected_result2, $test_description2);

            echo "Passed: " . $this->unit->passed_tests();
            echo "Failed: " . $this->unit->failed_tests();
            echo $this->unit->report();

Koden för att göra detta direkt i klassen CI_Unit_Test är betydligt enklare. Läs kommentarerna nedanför för hur man går till väga för att göra det.

Till sist

Enhetstestning i CodeIgniter finns även dokumenterat här.

Detta var allt för detta inlägg. Om du har några frågor eller kommentarer kring enhetstestning i CodeIgniter, lämna då gärna en kommentar i kommentarsfältet eller skicka iväg ett mejl till ToggleOnBlog@gmail.com.

Nästa sida »

Blogg på WordPress.com.
Entries och kommentarer feeds.