Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
TAEF maakt gebruik van RunFixtureAs om testarmaturen (module-, klasse- en testniveau-instellingen en opschoningsfuncties) uit te voeren in een andere context dan de bijbehorende test(en).
vereisten voor
- Te.Service moet worden geïnstalleerd en uitgevoerd op de machine om verhoogde testopstellingen uit te voeren vanaf niet-verhoogde Te.exe-processen, of om testopstellingen uit te voeren als Lokaal Systeem.
Overzicht
RunFixtureAs kan worden toegepast op module-, klasse- of testniveau en erft door in de teststructuur. Om de mogelijkheid te bieden om af te zien van de overname van RunFixtureAs op een bepaald niveau in de structuur, worden metagegevens van RunFixtureAs:[scope] ook ondersteund.
Als een module bijvoorbeeld is gemarkeerd met RunFixtureAs=System, kan een klasse (ClassA) worden gemarkeerd als RunFixtureAs:Test=Default. In dat geval worden de module- en klassefixtures uitgevoerd als System, maar de testniveau-fixtures binnen ClassA worden uitgevoerd in dezelfde context als Te.exe, hoewel nog steeds in een ander proces dan de test.
De waarde van de metagegevens runFixtureAs:[scope] wordt niet overgenomen in de teststructuur; deze is alleen van toepassing op het opgegeven bereik.
Deterministische garanties
- Standaard (als er geen RunFixtureAs-waarden zijn opgegeven), worden tests en armaturen gegarandeerd binnen hetzelfde proces uitgevoerd.
- Als een armatuur is gemarkeerd met een geldige RunFixtureAs-waarde anders dan 'Test', wordt de armatuur in een ander proces uitgevoerd dan de test. Dit betekent dat, zelfs als een test is gemarkeerd met RunAs=Elevated en RunFixtureAs=Elevated, de test in een verhoogd proces wordt uitgevoerd en de bijbehorende opstellingen in een afzonderlijk proces met verhoogde rechten worden uitgevoerd.
- Overeenkomende armaturen voor een bepaald bereik worden altijd uitgevoerd binnen hetzelfde proces (bijvoorbeeld de installatie en opschooninrichting van een klasse worden binnen hetzelfde proces uitgevoerd).
RunFixtureAs-typen
TAEF ondersteunt de volgende RunFixtureAs-typen, die worden opgegeven door de testmetagegevens:
Systeem
**
TAEF draait de testomgeving als Lokaal Systeem.
Notitie De testarmaturen die u als Lokaal systeem uitvoert, mogen geen gebruikersinterface maken. Als uw fixtures een UI moeten maken of ermee moeten werken, moet u uw UI-gerelateerde code verplaatsen naar afzonderlijke uitvoerbare programma's die op een bureaublad worden uitgevoerd vanuit uw tests met behulp van CreateProcessAsUser.
Verheven
TAEF zorgt ervoor dat het testonderdeel in een opgehoogd proces wordt uitgevoerd door, indien nodig, een opgehoogd proces te starten waarin het testonderdeel wordt uitgevoerd.
Notitie De gebruiker die TAEF uitvoert, moet lid zijn van de beheerdersgroep om armaturen uit te voeren die zijn gemarkeerd met RunFixtureAs=Elevated. Dit komt doordat niet-beheerders geen gesplitst token hebben om te verhogen.
Standaard
TAEF voert de testopstelling uit binnen dezelfde context als Te.exe (maar nog steeds binnen een ander proces dan de test).
Broker
TAEF draait de fixture in een 'Immersive Broker'-proces.
Opmerking
- 'Broker' wordt alleen ondersteund op Windows 8- en hoger-besturingssystemen.
- Het testondertekeningsbeleid moet zijn ingeschakeld op het systeem. Voor meer informatie, zie de optie TESTSIGNING Boot Configuration.
- Het extern uitvoeren van tests met RunFixtureAs=Broker wordt momenteel niet ondersteund.
- Bij uitvoering met 'RunFixtureAs=Broker' gebruikt TAEF het "TE.ProcessHost.Broker.exe" proces voor het uitvoeren van de testopstellingen, niet "TE.ProcessHost.exe".
UIAccess
TAEF voert de testopstelling uit in een proces dat is gemarkeerd met het UIAccess-uitvoeringsniveau. Zie het ontwerp van het Windows-integriteitsmechanisme voor informatie over UIAccess voor ui-automatiseringstoepassingen.
Opmerking
- UIAccess wordt alleen ondersteund op Vista en hogere besturingssystemen.
- De binaire TAEF-bestanden moeten worden uitgevoerd vanuit een map onder de map Program Files op de computer.
- Het extern uitvoeren van tests met RunFixtureAs=UIAccess wordt momenteel niet ondersteund.
- Bij uitvoering met 'RunFixtureAs=UIAccess' gebruikt TAEF het "TE.ProcessHost.UIAccess.exe" proces voor fixture-uitvoering, niet "TE.ProcessHost.exe".
Test
TAEF voert de armaturen uit in hetzelfde proces of dezelfde context als de test.
Notitie Dit is het standaard TAEF-gedrag wanneer er geen RunFixtureAs-instellingen zijn opgegeven.
RunFixtureAs:[scope]
TAEF ondersteunt de volgende RunFixtureAs:[scope]-waarden, die worden opgegeven door de testmetagegevens.
RunFixtureAs:Module, RunFixtureAs:Assembly of RunFixtureAs:Dll
De waarde RunFixtureAs is alleen van toepassing op het knooppunt op moduleniveau in de testhiërarchie.
RunFixtureAs:Class
De waarde RunFixtureAs is alleen van toepassing op de knooppunten op klasseniveau in de testhiërarchie.
RunFixtureAs:Methode of RunFixtureAs:Test
De waarde RunFixtureAs is alleen van toepassing op de knooppunten op testniveau in de testhiërarchie.
Tests markeren met RunFixtureAs
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
TEST_CLASS(MyTests);
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
TEST_METHOD_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en testomgevingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestSetup en MyTestCleanup worden uitgevoerd als Verhoogd
- MyClassSetup en MyClassCleanup worden uitgevoerd als System (binnen hetzelfde proces als MyTestMethod)
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen hetzelfde proces als MyTestMethod)
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en testopstellingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestSetup en MyTestCleanup worden uitgevoerd als Verhoogd
- MyClassSetup en MyClassCleanup worden uitgevoerd als Verhoogd
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen hetzelfde proces als MyTestMethod)
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"System")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
TEST_METHOD_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en fixtures als volgt uitgevoerd:
- MyTestMethod werkt in de beperkte modus
- MyTestSetup en MyTestCleanup worden uitgevoerd als Verhoogd
- MyClassSetup en MyClassCleanup worden uitgevoerd als System
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als Beperkt (binnen hetzelfde proces als MyTestMethod)
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"System")
TEST_METHOD_PROPERTY(L"RunFixtureAs:Test", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en testopstellingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd met verhoogde bevoegdheden; het "RunFixtureAs:Test"-bereik is toegepast op alle testmethoden binnen de klasse MyTests
- MyClassSetup en MyClassCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
- MyModuleSetup en MyModuleCleanup worden uitgevoerd binnen de context van hun respectieve testproces (Systeem voor MyTestMethod en Beperkt voor MyTestMethod2)
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"System")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
TEST_METHOD_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en opstellingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd als System voor MyTestMethod en als Elevated voor MyTestMethod2
- MyClassSetup en MyClassCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
- MyModuleSetup en MyModuleCleanup worden uitgevoerd in de context van hun respectieve testproces (System for MyTestMethod en Restricted for MyTestMethod2)
BEGIN_MODULE()
MODULE_PROPERTY(L"RunFixtureAs", L"System")
END_MODULE()
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"Default")
TEST_CLASS_PROPERTY(L"RunFixtureAs:Test", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en opstellingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd met verhoogde rechten voor zowel MyTestMethod als MyTestMethod2
- MyClassSetup en MyClassCleanup worden uitgevoerd als Standaard (binnen dezelfde context als Te.exe momenteel wordt uitgevoerd, maar binnen een ander proces dan MyTestMethod en MyTestMethod2)
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
BEGIN_MODULE()
MODULE_PROPERTY(L"RunFixtureAs", L"System")
MODULE_PROPERTY(L"RunFixtureAs:Test", L"Test")
END_MODULE()
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en fixtures als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd binnen hetzelfde proces als MyTestMethod en MyTestMethod2
- MyClassSetup en MyClassCleanup worden uitgevoerd als Verhoogd
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
BEGIN_MODULE()
MODULE_PROPERTY(L"RunFixtureAs", L"System")
MODULE_PROPERTY(L"RunFixtureAs:Test", L"Test")
END_MODULE()
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
TEST_METHOD_PROPERTY(L"RunFixtureAs", L"Elevated")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het voorgaande voorbeeld worden tests en armaturen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd binnen hetzelfde proces als MyTestMethod en in een verhoogd proces voor MyTestMethod2
- MyClassSetup en MyClassCleanup worden uitgevoerd als Verhoogd
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
BEGIN_MODULE()
MODULE_PROPERTY(L"RunFixtureAs", L"System")
END_MODULE()
MODULE_SETUP(MyModuleSetup);
MODULE_CLEANUP(MyModuleCleanup);
class MyTests
{
BEGIN_TEST_CLASS(MyTests)
TEST_CLASS_PROPERTY(L"RunFixtureAs:Class", L"Elevated")
END_TEST_CLASS()
BEGIN_TEST_METHOD(MyTestMethod)
TEST_METHOD_PROPERTY(L"RunAs", L"System")
END_TEST_METHOD()
BEGIN_TEST_METHOD(MyTestMethod2)
TEST_METHOD_PROPERTY(L"RunAs", L"Restricted")
END_TEST_METHOD()
TEST_METHOD_SETUP(MyTestSetup);
TEST_METHOD_CLEANUP(MyTestCleanup);
TEST_CLASS_SETUP(MyClassSetup);
TEST_CLASS_CLEANUP(MyClassCleanup);
};
In het bovenstaande voorbeeld worden tests en inrichtingen als volgt uitgevoerd:
- MyTestMethod wordt uitgevoerd als Systeem
- MyTestMethod2 wordt uitgevoerd met beperkte rechten.
- MyTestSetup en MyTestCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)
- MyClassSetup en MyClassCleanup worden uitgevoerd als Verhoogd
- MyModuleSetup en MyModuleCleanup worden uitgevoerd als System (binnen een ander proces dan MyTestMethod)