Unit Tests für XML Docs

1 view
Skip to first unread message

Markus Zywitza

unread,
Jul 20, 2009, 12:12:31 PM7/20/09
to altnetde
Hallo

ich bin gerade dabei, ein Fluent Interface zu entwerfen. Ich möchte aber gerne auch, dass im IntelliSense (also in den XML-Kommentaren) sinnvolle Dinge stehen (und eben keine GhostDoc-Ergüsse). Dafür wollte ich Unit-Tests verwenden. Meine Anforderung ist, lediglich das Vorhandensein bestimmter Schlüsselwörter in den Kommentaren zu prüfen.

Bevor ich jetzt anfange, mit DOM und XPath die assembly.xml auseinander zu pflücken, würde ich gerne wissen. kennt Ihr vielleicht ähnliche Tools? Am besten ohne Magic Strings, sondern in der Art: Assert.DocContains<MyClass>(myclass=>myclass.Property, "Schlüsselwort", "Schlüsselwort2");

-Markus

Erich Eichinger

unread,
Jul 22, 2009, 4:32:27 AM7/22/09
to altn...@googlegroups.com

Soweit ich weiß, gibt es da nix. Sie mal, ob dir die Teile aus NDoc3 etwas helfen. Vermutlich ist der NDocXmlGenerator - siehe https://ndoc3.svn.sourceforge.net/svnroot/ndoc3/trunk/src/Core/Core/Reflection - am ehesten das, was du brauchen kannst. Der NDocXmlGenerator nimmt Assemblies und deren SlashDoc XML Dateien und merged das in ein einziges Dokument, sodaß du ev. leichter auf die Informationen via XPath zugreifen kannst. Der Code leistet meinen Aufräumbestrebungen allerdings zugegebenermaßen noch einigen Widerstand...

 

-Erich

Ralf Ronneburger

unread,
Jul 28, 2009, 6:33:59 AM7/28/09
to altn...@googlegroups.com
Hallo,

ich habe eine scheinbar einfache Operation, bekomme aber nicht raus, wie
ich sowas mit NHibernate.Linq lösen kann. Was ich machen möchte ist
folgendes:


(from p in m_Session.Linq<Person>()
where p.Name == name || p.Vorname + " " +
p.Name == name
select new PersonDto(...)).ToList();

Das Problem dabei ist, dass NHibernate.Linq nicht mit der Bedingung

p.Vorname + " " + p.Name == name

zurechtkommt. Gibt es irgendeine Möglichkeit, eine solche Bedingung in
NHibernate.Linq auszudrücken oder muss ich auf HQL oder CriteriaAPI
ausweichen?

Viele Grüße,

RalfNHibernateLinq and string concatenation

Erich Eichinger

unread,
Jul 28, 2009, 9:04:12 AM7/28/09
to altn...@googlegroups.com
die Concatenation in eine Funktion zu packen, sodaß nur 1 Expression übrigbleibt, wie

(from p in m_Session.Linq<Person>()
where p.Name == name || string.Concat(p.Vorname," ",p.Name) == name
select new PersonDto(...)).ToList();

o.ä. schon probiert?

-Erich

> -----Original Message-----
> From: altn...@googlegroups.com [mailto:altn...@googlegroups.com] On

Ralf Ronneburger

unread,
Jul 28, 2009, 9:22:05 AM7/28/09
to altn...@googlegroups.com
Hallo Erich,

ja, das hatte ich schon probiert, wenn das funktionieren würde, dann
wäre ich glücklich. Aber ich bekomme da eine "NHibernate.QueryException:
Cannot use subqueries on a criteria without a projection.". Wobei ich
hinzufügen muss, dass ich nicht direkt Person abfragen, sondern
PostalAddress, welches einen Foreign Key auf Person hat. Insoweit war
die Abfrage vorhin in der Mail ein wenig zu stark vereinfacht, was ich
versuche ist etwa das:

(from p in m_Session.Linq<PostalAddress>()
where string.Concat(p.Person.Vorname," ",p.Person.Name) == name
select new PostalAddressDto{...}).ToList()

Ich kann die Properties zwar einzeln abfragen, also:

p.Vorname == name || p.Name == name

funktioniert perfekt, aber

string.Concat(p.Person.Vorname," ",p.Person.Name) == name

wirft obigen Fehler.

Viele Grüße,

Ralf


Erich Eichinger schrieb:

Alexander Groß

unread,
Jul 28, 2009, 11:02:45 AM7/28/09
to altn...@googlegroups.com
Hallo Ralf,

schau dir die zahlreichen mit [Ignore]-Attribut versehenen Tests in NH.Linq an. Dort wirst du auch sehen dass Funktionsaufrufe derzeit nicht unterstützt werden. Das war schon vor einige Monaten der Falls als ich mir NH..Linq auch voller Vorfreude ansah, nur um dann festzustellen dass meine semi-komplexen Einschränkungsklauseln in "where 1=1" übersetzt wurden. NHProf hilft hier auch beim Abgleich der Linq-Query zu stimmigem SQL.

Alex

--
Alexander Groß
http://therightstuff.de/

| --~--~---------~--~----~------------~-------~--~----~
| Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-
| Gruppe "altnetde".
| Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
| an altn...@googlegroups.com
| Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an
| altnetde+u...@googlegroups.com
| Weitere Optionen finden Sie in dieser Gruppe unter
| http://groups.google.com/group/altnetde?hl=de
| -~----------~----~----~----~------~----~------~--~---
|

Reply all
Reply to author
Forward
0 new messages