středa 5. listopadu 2014

nUnit - DataDriven Test

  1. Do testovací metody doplníme parametry.
  2. Metodu odekorujeme namísto atributu Test atributem TestCase který obsahuje parametry pro jedem testovací scénář.
  3. V metodě použijeme jednotlivé parametry jako vstupní parametry testu nebo jako očekávané výsledky testu.

[TestCase(123, "FVBAN", "BP14", "17Ř00U", Payment.PaymentMethodType.bank, "BAN")]
        [TestCase(-123, "BANFP", "BV14", "17Ř00P", Payment.PaymentMethodType.bank, "BAN")]
        [TestCase(123, "FVBAN", "PP", "17Ř00U", Payment.PaymentMethodType.payU, "PAYU")]
        [TestCase(-123, "POPLBAN", "PV", "17Ř00P", Payment.PaymentMethodType.payU, "PAYU")]
        public void Map_Payment_To_BankDokl(
            int amount,
            string predkont, 
            string rada, 
            string cleneni, 
            Payment.PaymentMethodType method, 
            string methodCode)
        {
            // Arange           
            var date = DateTime.Parse("2014-04-11");

            var payment = new Payment()
            {
                Amount = amount,
                ConstantSymbol = "12345",
                CounterpartAccountBank = "0100",
                CounterpartAccountNumber = "1212121212",
                Date = date,
                Description = "Karel nese čaj",
                PaymentMethod = method,
                SpecificSymbol = "123456999",
                VariableSymbol = "999999",
            };

            var bankDokl = new BankDokl();

            // Act
            AutoMapper.Mapper.Map(payment, bankDokl);

            // Assert
            Assert.AreEqual(Math.Abs(payment.Amount), bankDokl.Amount);
            Assert.AreEqual(payment.ConstantSymbol, bankDokl.ConstantSymbol);
            Assert.AreEqual(payment.CounterpartAccountNumber, bankDokl.Ucet.Ucet);
            Assert.AreEqual(payment.CounterpartAccountBank, bankDokl.Ucet.BKod);

            Assert.AreEqual(payment.Date, bankDokl.DatPlat);
            Assert.AreEqual(payment.Description, bankDokl.Note);
            Assert.AreEqual(methodCode, bankDokl.Ucet.Zkrat);
            Assert.AreEqual(payment.SpecificSymbol, bankDokl.SpecificSymbol);
            Assert.AreEqual(payment.VariableSymbol, bankDokl.VariableSymbol);

            Assert.AreEqual(rada, bankDokl.DRada);
            Assert.AreEqual(cleneni, bankDokl.Cleneni);
            Assert.AreEqual(predkont, bankDokl.PrKont);
        }

Zdroj:
http://www.nunit.org/index.php?p=testCase&r=2.5

pondělí 6. října 2014

Vytvoření NuGet package

V první řadě je potřeba vytvořit soubor s definicá balíčku *.nuspec. To vygenerujeme pomocí příkazu
nuget spec
Který spustíme v pracovním adresáři projektu.

Není špatné si nainstalovat NuGet Package Explorer
NuGetPackageExplorer

Ve Visual Studiu pak nastavíme v properties projektu PostBuild Step

cd $(MSBuildProjectDirectory)
NuGet pack -Properties Configuration=Release
REM *** Release Confuguration ***
nuget pack -properties configuration=release -IncludeReferencedProjects
REM *** Release Confuguration ***
nuget pack -properties configuration=release -symbols -IncludeReferencedProjects
REM *** Push NuGet Package ***
NuGet.exe push -source \\pc-Zbynek\NuGetPackages\ My.Assembly.1.4.3.0.nupkg

středa 1. října 2014

Nuget server - neúplný návod

Co je potřeba udělat ?

  1. Vytvořit prázdný ASP web form projekt
  2. Nainstalovat z nugetu balíček Nuget.Server (Install-Package Nuget.Server)
  3. v App.configu vyplnit apiKey na libovolné heslo
  4. Vytvořit novou stránku na IIS a nastavit jí 
  5. Nastavi Publish profile na váš IIS server
  6. Vypublikovat aplikaci
  7. Nastavit složce Packages oprávnění zápisu pro uživatele IIS_IUSRS (nebo uživatele AppPoolu)
Práce na půl hodiny

Aby jsme mohli vytvořit vlastní balíčet. Následně je potřeba:
  1. Si stáhnout NuGet.exe z webu https://nuget.codeplex.com/releases
  2. vytvořit si příkaz pro vytvoření specifikace
  3. Balíčku
  4. Publish do NugetRepository
CreateSpec
c:\NugetCommand\NuGet.exe spec "lib\MyAssembly.dll"

CreatePack
c:\NugetCommand\NuGet.exe pack "lib\MyAssembly.dll.nuspec"

Deploy Command
nuget push MyAssembly.1.0.0.nupkg -source http://pc-zbynek/ -ApiKey NwoNugetKey


Podařilo se mi rozjet NugetServerAplikaci na lokálním serveru.

Na Win8 je potřeba povoli Internetovou informařní služnu a pomocí Platform instaleru doinstalovat podporu pro .NET 4.5

Stránce je potřeba nastavit applikační Pool na .NET v4.5 který jsme právě nainstalovali.

Ale potom jsem se dvě a půl hodiny snažil uploadovat balíček na server.


 Ve Visual Studiju si ale můžete nastavit Package source na lokální NuGet server ale balíčky do něj budete moc dostat pouze kopírováním do složky C:\inetpub\NugetServer\Packages





Failed to process request. 'Not Found'.
Vzdálený server vrátil chybu: (404) Nenalezeno..

https://nuget.codeplex.com/discussions/568792


Na Windows 7
Na Win 7 se mi server podařilo rozjed podstatně rychleji. Při Push příkazu mi vracel chybu

Failed to process request. 'Internal Server Error'.
Vzdálený server vrátil chybu: (500) Vnitřní chyba serveru..

Ale po nastavení oprávnění do složky Packages se balíčen na serveru objevil

Zdroj:
https://www.youtube.com/watch?v=KaEmsdf0oKU

středa 24. září 2014

Selenium RC

Selenium Server
Proč bych měl pouštět testy na svém počítači když to můžu nechat na nějakém jiném? Selenium umožňuje spouštět testy vzdáleně na Selenium serveru. Stačí na počítači nainstalovat Javu a ze stránek selenia stahneme aplikaci selenium server.

Pluralsight - Starting Selenium Server

Instalace:
Na počítači kde chceme selenium server spustit potřebujeme nainstalovat Javu. Instalátor získáme na adrese
http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html

Potom stáhneme samotný Selenium Server z adresy http://selenium-release.storage.googleapis.com/2.43/selenium-server-standalone-2.43.1.jar
Nakopírujeme ho do bin adresáře právě nainstalované Javy.
Pak už jen spustím server pomocí příkazu
java -jar selenium-server-standalone-2.43.1.jar

Na počítači musí být také nainstalovaný prohlížeš FireFox, pokud nechcete používat předinstalovaný Internet Explorer.

Ve zdrojovém kódu Selenium testů provedeme malou úpravu kde zaměníme

Instance = new FirefoxDriver();

za

Instance = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), DesiredCapabilities.Firefox());

V tomto kódu určíme adresu a port selenium serveru a všechny testy se budou provádět na právě nainstalovaném serveru.

Testovací metoda pak může vypadat nějak takto:

[TestMethod]
        public void TestMethod1()
        {
            var Instance = new RemoteWebDriver(new Uri("http://192.168.0.24:4444/wd/hub"), DesiredCapabilities.Firefox());
            var n = Instance.Navigate();
            n.GoToUrl("http://www.seznam.cz");
            var el = Instance.FindElement(By.Name("q"));
            el.SendKeys("Zbynek Sulc Blog");

            var btn = Instance.FindElement(By.Id("hledej"));
            btn.Click();
            Thread.Sleep(3000);
            Instance.Quit();
        }


Selenium Server Grid Mode
Několik instancí serveru umožňují spouštět servery paralelně na různých prohlížečích.

Android selenium server 
Jak testovat weové aplikace na platformě android se dočtete na tomto webu
https://code.google.com/p/selenium/wiki/AndroidDriver#Using_the_Remote_Server
Do mobilu je potřeba nainstalovat servrovou aplikaci
android-server-2.21.apk - https://code.google.com/p/selenium/downloads/detail?name=android-server-2.21.0.apk

Tento projekt je již ale zastaralý a vystřídal ho projekt Selendroid
http://selendroid.io/mobileWeb.html

Zdroje:
  1. http://pluralsight.com/training/Player?author=john-sonmez&name=selenium-m5-server&mode=live&clip=0&course=selenium
  2. http://pluralsight.com/training/courses/TableOfContents?courseName=selenium&highlight=john-sonmez_selenium-m2-ide*4#selenium-m2-ide


úterý 16. září 2014

Active 24 a WebDeploy z Visual Studia

O kunfiguraci WebDeploy na hosting Active 24 jsem se nikde nic nedočetl ani se mi nepodařilo nic vygooglit. V zoufalství jsem se pokusil o deploy pomocí FTP, ale to z nějakého důvodu z Visual Studia nefungovalo. (soubory se na hostingu neobjevily). TotalCommandrem se mi povedlo přenést soubory z adresáře obj\Release\Package\PackageTmp a web zprovoznit.

Po několika mailech s technickou podporou se mi podařilo zjistit od administrátora, že hodnota Site/application je něco ve smyslu 24631 - v417815 (mezery kolem pomlčky jsou důležité)

Do té doby mi průvodce po stisknutí tlačítka [Validate Connection] vracel chybovou hlášku:
Web deployment task failed. (Connected to the destination computer ("www.seznam.cz") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site.)
Pak vše začalo fungovat jak má.



Když jsem pro další projekt chtěl po helpdesku zjistit správný řetězec pro novou doménu, tak mi prozradil sladké tajemství ;)

Potřebné údaje jsou vždy po zřízení hostingu uloženy ve složce wwwrootu v souboru
web.PublishSettings

<?xml version="1.0" encoding="utf-8"?>
<publishData>
 <publishProfile
 profileName="MSDeploy"
 publishMethod="MSDeploy"
 publishUrl="pink.globenet.cz"
 msdeploySite="24631 - v417815"
 userName="v417815a"
 userPWD="HCRcpfOIqNc5"
 destinationAppUrl="http://seznam.cz.pink.globenet.cz/"
 controlPanelLink="http://centrum.active24.cz/" /> 
</publishData>

úterý 5. srpna 2014

Šablona domácí sítě

Vyhrazené IP adresy

Router (Brána) 192.168.0.1
Tiskána 192.168.0.3
SERVER 129.168.0.5

DHCP rez. 192.168.0.11
DHCP rez. 192.168.0.99

DHCP 192.168.0.100
DHCP 192.168.0.200

WiFi AP_2 192.168.0.253
WiFi AP_1 192.168.0.254

Barvy kabeláže v rozvodné skříni

Modem - Router červený 0.5m 1x
Router - Switch žlutý 0.5m 3x
Switch - PC 100M/s šedá 0.5m 8x
Switch - PC 1000M/s černá 0.5m 4x
Switch - WiFi AP modrá 1m 2x
Switch - Tiskárna zelený 3m 1x