windows - Leder du efter et mappe sammenligning værktøj til enhed/integration test

Indlæg af Hanne Mølgaard Plasc

Problem



Kontekst:

Miljø: MS Windows 7 eller 2008.

Kode: .NET (C #)


Jeg skrev en kode, der ændrer filsystemet: kopierer filer, sletter dem, opretter mapper osv.


Jeg vil gerne have nogle integrationstest for denne kode: Jeg vil udføre koden på en given mappe og derefter sammenligne resultatet med en foruddefineret forventet mappe.

Alt jeg behøver er et mappe sammenligning værktøj, som ville sammenligne mappestrukturen kun baseret på navne (andre parametre, f.eks. Oprettelsesdato, størrelse, tilladelser - er irrelevante).

Vigtigst, det skal let automatiseres i kode (. NET) eller som et kommandolinjeværktøj med en læsbar udgang.


Nogen forslag?

Bedste reference


Du kunne skrive et simpelt PowerShell script ved hjælp af cmdlet Sammenlign-objektet for det: [8]


$expected = Get-ChildItem C:ExpectedDirTree
$actual = Get-ChildItem C:ActualDirTree

Compare-Object $expected $actual -Property Name


Dette script vil sammenligne to katalogstrukturer baseret på egenskaben Name af deres noder, som kan være enten DirectoryInfo eller FileInfo-objekter. Resultatet er et array af objekter , der repræsenterer forskellighederne mellem de to strukturer i et format, der er ret let at analysere: [9] [10]


Name                SideIndicator
-----------         -------------
SomeDirectory            =>
SomeFile                 <=


Objekterne i det resulterende array har to egenskaber, som du kan bruge til at bestemme resultatet af testen:



  • Name: Navnet på den mappe eller fil, der findes i en struktur og ikke den anden

  • SiteIndicator: En streng, der repræsenterer, om objektet findes i strukturen på venstre side af sammenligningen eller i den på højre side


Andre referencer 1


Jeg gav det en anden tanke og fandt ud af, at notering af alle filer med deres relative sti, sorteret efter sti og navn, er tilstrækkelig: hvis den faktiske filliste er lig med den forventede filliste, passerer testen. Ellers mislykkes det.


Registrering af filerne kan gøres ved at:



  • Windows kommandolinje dir kommando, men den mangler funktionen af ​​den relative sti.

  • Kode (som også skal testes)

  • Et eksternt program, som f.eks. [11] Swiss File Knife, som sådan:

    list -sort -relnames c:mypath +tofile c:outputmy\_list.txt

    (som i sidste ende var mit valg)