Hirdetés
- EarFun Air Pro 4 - a cél a csúcs
- MIUI / HyperOS topik
- CES 2026: Színre lép a Motorola Razr Fold
- CES 2026: Főhajtás a Moto 360 előtt Polar funkciókkal
- Google Pixel 9 Pro XL - hét szűk esztendő
- OnePlus 15 - van plusz energia
- Huawei P30 Pro - teletalálat
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Rugalmas OLED panelre válthat a Samsung Galaxy A57
- Apple iPhone 15 Pro Max - Attack on Titan
Új hozzászólás Aktív témák
-
joysefke
veterán
xUnit Dispose vs Async hogyan?
Sziasztok!
Nagyon új nekem ez az xUnit, tegnap kezdtem
és nem hiszem, hogy jól használom az Async metódusomatot a Dispose()-ban: működik, de nem teljesen azt csinálja a kód amit szeretnék/elvárnék...Az adott xUnit test class egy külső API interfészről történő lekérdezést tesztel.
Az xUnit osztály konstruktorában van a setup kódom, itt többek között kreálok egy
frisssessionId-t amitől a teszt végén mindenképpen meg kell szabadulnom.
A "megszabadulás" egy AsyncDeleteSession(string sessionId)hívás formájában kell megtörténjen, ezért ezt beraktam a teszt osztálypublic async void Dispose()metódusába.A problémám az, hogy a Dispose() metódusban a végrehajtás látszólag túljut az
await DeleteSession()-ön, ezt onnan látom, hogy a SessionId törlődik a külső rendszerből.
De a DeleteSession() utáni szinkron utasítások már nem hajtódnak végre.Itt a kód!
Osztály deklaráció, konstruktor és Dispose:
public class GetAccountDetailsTests : IDisposable
{
// Setup
public GetAccountDetailsTests(ITestOutputHelper output)
{
// csak a lényeg:
_getSession = hot task indul
}public async void Dispose()
{
// nem annak látszik, de ez SZINKRON, a Task már elkészült
var sessionId = (await await _getSession).SessionId;
_output.WriteLine($"Teardown: DeleteSession({sessionId}) called...");
// ez biztosan most indul és a külső szervizből látszólag
// törlődik a session tehát a lényegi dolgát elvégzi,
// NEM tud exceptiont dobni
// (elnyeli őket) kóddal jelzi ha hiba volt
var result = await _client.DeleteSession(sessionId);
// Ide nem jut el a végrehajtás, nem ír semmit az outputba
var code = result.HttpStatusCode.ToString();
_output.WriteLine($"Teardown: DeleteSession(...) returned with {code}");
}Teszt metódus belseje, try-catch-ben, hogy biztosan eljusson a Dispose-ig:
public async void WhenValidArguments_ReturnsAccountDetails()
{
// Arrange
var sessionId = (await await _getSession).SessionId;
// Act
var result = await _client.GetAccountDetails(sessionId);
AccountDetailsModel account = JsonConvert.DeserializeObject<AccountDetailsModel>(result.Json);
// Assert
Assert.True(result.HttpStatusCode == System.Net.HttpStatusCode.OK);
Assert.True(account.AccountName == _settings.AccountName);
}Nem tudom hogyan kéne értelmesen debuggolni a tesztet, hiába rakok a Dispose-ba breakpointot átugrik rajta amikor a VS "Debug selected test" opciójával indítom.

Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hitelkártyák használata, hitelkártya visszatérítés
- Netflix
- EarFun Air Pro 4 - a cél a csúcs
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Budapest és környéke adok-veszek-beszélgetek
- Soundbar, soundplate, hangprojektor
- Media Player Classic és Home Cinema (MPC-HC)
- Vicces képek
- Router gondok
- További aktív témák...
- APC Smart-UPS 1500VA LCD RM 2U (SMT1500RMI2UC) - űj ára 450.000Ft
- Digitus Network Cabinet 19'' 42U DN-43000 white - Rack Szekrény
- BROCADE Ruckus ICX7150-24port - Switch - több db - 130Gbps
- 3D nyomtató - SAURER MarkingSolutions Signum Eco Lasersysteme - laser marking system
- Netgate XG-7100-1U 8GB pfSense+ - VPN - Profi tűzfal -10Gbe- Rackbe szerelhető
- HIBÁTLAN iPhone 14 Pro 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3919
- Telefon felvásárlás!! Apple Watch SE/Apple Watch SE 2 (2022)
- 2db Samsung Galaxy A6 32GB (Kijelző törött)
- ÚJÉVI AKCIÓK / MICROSOFT WINDOWS 10,11 / OFFICE 16,19,21,24 / VÍRUS,VPN VÉDELEM / SZÁMLA / 0-24
- Dell Vostro 3425 6magos Ryzen 5 5625U 16GB RAM 512GB SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest
és nem hiszem, hogy jól használom az Async metódusomatot a Dispose()-ban: működik, de nem teljesen azt csinálja a kód amit szeretnék/elvárnék...


