ComTest ja Visual Studio
ComTestin avulla voidaan Visual Studiossa kokeilla funktioiden toimivuutta sekä löytää mahdollisia virheitä toiminnassa.
1. Asentaminen
1.1 Java
Tarkista että Java on asennettuna. Helpoiten tämän näkee kun menee komentoriville (kirjoita Windows- hakuun cmd
) ja kirjoittaa
java -version
tai
java --version
Mikäli koneessasi on Java, antaa komentorivi Java-versiostasi tietoa.
Jos koneessasi ei ole Javaa (vähintään versio 8), lataa ja asenna uusin versio täältä.
Itselläni toimi vain “java -version”, ilman toista viivaa.
VL: Mikä käyttis, minkä version se sulle antaa? Varmaan joku vanha Java.
—Mulla sama homma. Windows 10, Java versio “1.8.0_271”
—Just asennettuna mullakin java versio näkyy yhdellä viivalla haettuna
VL: voi se näkyä yhdelläkin, mutta tuo rikkoo pahasti tapoja. ELi jos option nimi on enemmän kuin yksi kirjain, pitäisi sen eteen laittaa 2 viivaa. Java 8 on jo vanhaa kamaa, mutta saattaa toimia. Uusissa Javoissa tapoja on korjattu.
—1.2 Liitännäinen
Tässä vaiheessa tulee Visual Studio olla asennettuna
1. Tallenna koneellesi ja aja liitännäisen
-
HUOM! Tarkista, että selaimesi ei muuta asennustiedostoa
.zip
-päätteiseksi. Windows saattaa antaa suojausvaroituksia, mutta voit sallia tiedoston suorittamisen
Seuraa asennusohjelman ohjeita ja käynnistä sitten Visual Studio.
Mikäli asennus onnistui, C# -projektin ollessa auki, Visual Studion
Tools
(työkalut) -valikon alla löytyy nytComTest
-valikkoEikö toimi?
Jos
ComTest
-valikkoa ei näy, tarkista löytyykö ComTestiaExtensions/Manage Extensions
-valikosta. Valitse vasemmanpuoleisesta listasta Installed. Jos löytyy, aktivoi(enable
) se ja käynnistä Visual Studio uudelleen.Mikäli sinulla on vanha versio ComTestista asennettuna, poista(
uninstall
) se äskeisessä kohdassa mainitustaExtensions/Manage Extensions/All
-valikosta.
2. Avaa ComTestin asetusdialogi Tools/ComTest/Options
-valikosta:
- Avautuu seuraavanlainen ikkuna:
3. ComTestin polun (Path to ComTest.jar executable
) alle kirjoita polku johon haluat ComTest.jar
in latautuvan. Oletuspolku on todennäköisesti hyvä.
- Mikäli Javan polku ei ole automaattisesti täytetty, etsi ja kirjoita siihen
java.exe
-tiedoston koko polku
Kommentoin tästä pois ohjeen lainausmerkkien lisäämisestä polkuihin, joissa on välilyöntejä. Tällä hetkellä VS ei löydä javaa tai ComTest-tiedostoa, jos polun ympäröi lainausmerkeillä. - Juho K
—4. Seuraavaksi valitse Tools/ComTest/
valikosta mikä tahansa (muu kuin options) valinta, jolloin ladataan tarvittavat tiedostot.
Huom! Snippetiä ei tarvitse lisätä manuaalisesti jos äskeinen ComTest-liitännäisen asennus Visual Studioon onnistui.
4. Asenna Visual Studio snippet
Tämä on vapaaehtoinen osa, joka helpottaa ja nopeuttaa testien kirjoittamista automaattisyötön avulla.
Tallenna ComTest.snippet Visual Studion
Snippet
-kansioon omassaDocuments
(asiakirjat) -kansiossasi (klikkaa linkistä hiiren oikealla napilla -> tallenna linkki nimellä(save link as
)). Snippet kansio riippuu käyttöjärjestelmän versiosta ja käytetystä kielivalinnasta ja se voi olla jokin tai samanlainen kuin seuraavista (VS2022 tapauksessa käytä 2019 sijaan 2022 nimissä):...\My Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets C:\Users\vesal\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets C:\Käyttäjät\vesal\tiedostot\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets Libraries: Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets
- Jos kyseistä kansiota ei löydy, täytyy sellainen luoda itse
- Jos lataat IE:llä tai Edgellä, tarkista, ettei tiedosto saa
.xml
päätettä - Jos tallentaminen ei onnistu, voit tehdä uuden tekstitiedoston, johon kopioit
ComTest.snippet
in sisällön ja nimetä senComTest.snippet
-muotoon. Varmista, että tiedoston tyyppi onsnippet
eikätxt
!
Käynnistä Visual Studio uudelleen (VS2022 ei tarvinnut)
Kokeile snippetin toimivuus:
Kirjoita
comt
ohjelmassasi XML -kommenttikentän perään:/// <summary> /// Multiplies to numbers /// </summary> /// <param name="a">first number</param> /// <param name="b">second number</param> /// <returns>a*b</returns> comt| public static double Multiply(double a, double b) { // ... }
Ja paina
tab
-painiketta kahdesti. Koodin pitäisi muuttua seuraavanlaiseksi:/// <summary> /// Multiplies to numbers /// </summary> /// <param name="a">first number</param> /// <param name="b">second number</param> /// <returns>a*b</returns> /// <example> /// <pre name="test"> /// | /// </pre> /// </example> public static double Multiply(double a, double b) { // ... }
Ongelmia?
- Varmista, että paina
tab
-painiketta kun osoitin on heticomt
-tekstin perässä, ei välejä tai muita merkkejä välissä - Varmista ettei
comt
-tekstin edessä ole///
1.2.1 ComTest liitännäisen (plugin) päivitys
Uusi versio tullut 9.10.2022
- lataa uusi liitännäisen versio
- sammuta Visual Studio
- tuplaklikkaa ladattua
.vsix
-tiedostoa - anna asennusoikeus
- asentaa
- Jos valittaa että ei voi asentaa kun on entinen olemassa, niin poista vanha:
- avaa VS2022
- menusta
Extantions/Manage extensions
- avaa
Installed
- etsi ComTest
Uninstall
- jatka kohdasta 2
- Jos valittaa että ei voi asentaa kun on entinen olemassa, niin poista vanha:
1.3 Sarkaimilla (tab) sisennys pois päältä
Vaihda Visual Studion asetuksista niin, että käytetään sisennyksiin vain välilyöntejä, ei sarkainmerkkejä:
Tools/Options
- etsi sanaa
tab
- valitse
C#
- pallukka kohtaan
Insert spaces
jotenkin nyt en löydä ko. kohtaa Visual Studiosta, siellä on tabs and windows, mutta siellä ei ole kohtaa C#
—2. Käyttö
2.1 Testiohjelma
Ensimmäistä testiä varten luo uusi C# ConsoleMain
-projekti. Anna projektille nimeksi annat vaikkapa Laskuja
ja sitten muutat Laskuja.cs
tiedostossa Laskuja
-luokan sisällöksi:
Jypelin Console Main projektin pohjassa ei ilmaannu program.cs fileä. Solutionista ei löydy muuta kuin Laskuja.cs file. Korjasin, tiedoston ja luokan nimi on sama kuin projektin nimi ConsoleMain
-projektissa. Näillä nimillä ei kuitenkaan ole tässä yhteydessä merkitystä. -MR
Aja testit alla olevilla ohjeilla yhden kerran ja näe punaista. Sitten korjaa rivi return 0
muotoon
return a + b;
ja katso että näet vihreätä.
Visual Studiossa ComTestin voit ajaa klikkaamalla solution explorerissa
omaa solutioniasi hiiren oikealla panikkeella ja aukeavasta menusta painamalla ComTest Solution
tai näppäinyhdistelmällä Ctrl + Shift + Alt + Q
, tai ikkunan yläreunasta Tools\ComTest\
Jos solutionissa on monta projektia, voi ComTest Project
olla parempi vaihtoehto.
Kun ensimmäisen kerran ajat ComTestin, lataa se se tarvittavan ComTest.jar
tiedoston, sekä koodilohkojen tekemistä helpottavan snippet-tiedoston. Lisäksi Visual Studio lataa muutaman testien ajamiseen tarvittavan paketin. Tässä saattaa kestää hetki. Näet etenemisen ikkunan alareunasta.
Kun saat toimivuuden kokeiltua, käynnistä Visual Studio vielä yhden kerran uudelleen, jotta ladattu snippet aktivoituu. Sen käytöstä alempana lisää.
Mikäli testi epäonnistuu ja tulee Build Error, sekä Error List näyttää seuraavanlaista: Tarkista että koodissasi lukee
public class Program
{
//...
}
eikä vain
class Program
{
//...
}
Jos testien ajaminen onnistuu ja
Kaikki testit menevät läpi, näyttää
Test Explorer
vihreää väriäYksikin testi menee väärin, näyttää
Test Explorer
punaista väriä
Jos testien ajo ei onnistu, ei Test Exploreria näy tai se näyttää sinistä väriä
2.2 ComTestin syntaksi
ComTestissa testit kirjoitetaan itse aliohjelman kommenttiosion jälkeen juuri ennen itse aliohjelmaa.
Testiosion aloittaa aina
///<example>
///<pre name="test">
jonka perään kirjoitetaan itse testit, esimerkiksi
/// LukujenTulo(3,4) === 12;
/// LukujenTulo(0,6) === 0;
Testiosion päättää
/// </pre>
/// </example>
josta seuraavalla rivillä alkaa aliohjelman koodi.
Testinä toimii ensin kirjoitettava testattavan aliohjelman kutsu (esim. LukujenTulo(3,4)
), jonka perään tuleva ===
symboloi "pitäisi tulla". ===
perään kirjoitetaan mitä aliohjelman kutsuumme kirjoitetuilla parametreillä tulisi palauttaa. Rivi päätetään puolipisteellä.
Mikäli aliohjelma todellisuudessa palauttaa jonkin muun vastauksen, näyttää testi punaista.
Jos haluat testata desimaalilukuja, käytä ===
-ilmauksen sijaan ~~~
-merkkejä.
Koska koodilohkon oikeanlaisen syntaksin muistaminen on hankalaa, lataa ComTest plugin sinulle automaattisesti sitä ladattavan snippet tiedoston.
Mene haluamasi aliohjelman yläpuolelle ja kirjoita comt
, jonka jälkeen paina kaksi kertaa tab
-näppäintä (Caps lockin yläpuolella).
Eli esimerkiksi:
/// <summary>
/// Tässä on dokumentaatio...
/// </summary>
comt
public static int Summa(int a, int b)
{
return 0;
}
tilalle muodostuu
/// <summary>
/// Tässä on dokumentaatio...
/// </summary>
/// <example>
/// <pre name="test">
///
/// </pre>
/// </example>
public static int Summa(int a, int b)
{
return 0;
}
Huomaa että comt
sanan edessä ei saa olla ///
, tai muuten pikakomento ei toimi.
Lisää ComTest esimerkkejä (in English)
3. Ongelmia
3.1 Jos .vsix tiedostojen ajaminen ei onnistu
Jos
ComTestCSPlugin.vsix
ajo kaatuu, niin voi yrittää seuraavaa:
- luo hakemisto
c:\MyTemp\temp
- kirjoita komentoriviltä
Control
- ota
System/Advanced System Settings/Advanced/Environment Variables
- vaihda muuttujien TEMP ja TMP arvoksi tuo
c:\MyTemp\temp
Sitten kokeile uudelleen klikata vsix
-tiedostoja.
3.2 Testejä ajaessa virheilmoitus: Illegal characters in path
Milloin ilmenee?
- Olet muuttanut projektisi nimeä (
Rename
) sen jälkeen, kun olet käyttänyt ComTestiä projektin vanhan nimen aikana. Ongelma johtuu ilmeisesti siitä, että Visual Studio / ComTest ei päivitä testien kansioiden nimiä projektin uudelleennimeämisen jälkeen.
Yksi ehdotettu ratkaisu
- Uusi projekti haluamallasi nimellä.
- Kopioi ohjelmakoodisi tähän uuteen projektiin oikeisiin tiedostoihin.
- Aja ComTest Solution -> ComTest luo uudet testikansiot oikeilla nimillä ja testien pitäisi löytyä.
- (Jos sama ongelma ilmenee ja olet muuttanut Solutionin nimeä, niin tee kokonaan uusi Solution projekteineen)
Tätä ei pitäisi enää tapahtua. Ilmoita jos saat tämän virheen. -MR
—3.3 Testien tulokseksi ei tule vihreää tai punaista, vaan sinisiä symboleita
Milloin ilmenee?
- Kun konsoliprojektisi pohjamalli oli .Net Frameworkin konsoliprojekti. Oikeita vaihtoehtoja olisivat Jypelin ConsoleMain, tai .Net Core-konsoliprojekti.
Mistä tiedän onko tämä .Net Framework-projekti?
- Solution Explorer-ikkunassa on nähtävissä Properties ja References. Näitä ei pitäisi näkyä, vaan niiden tilalla olisi Dependencies.
Korjaamiseen kaksi vaihtoehtoa:
- Vaihda projektin Run Configurationiksi AnyCpu:n sijasta x86, tai...
- Tee uusi projekti Jypelin ConsoleMain -mallilla, johon kopioit koodisi. Uusiin projekteihin kannattaa ehdottomasti valita Jypelin ConsoleMain, jotta kurssin työkalujen yhteensopivuus on maksimoitu.
Tätä saattaa joskus tapahtua, mutta tässä ehdotettu syy/korjaus ei nykyisin ole aina täysin relevantti. Jos tapahtuu, muodosta testit Comtestin “Generate Tests” valinnasta, ja aja ne Test Explorerin ajonappulasta. -MR
—3.4 ComTest ei toimi jos on projekteja on unload-tilassa
- jos joku projekti on unload-tilassa ei toistaiseksi voi silloin ko solutionissa ajaa ComTestejä vaan saa mystisiä virheilmoituksia
- korjaus: poista unload projekti tai avaa se uudelleen
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.