Anzahl der Abfragen, die von NHibernate in einem Komponententest ausgeführt wurden

8

Bei einigen Einheiten- / Integrationstests des Codes möchten wir überprüfen, ob der Code der zweiten Ebene korrekt verwendet wird.

Basierend auf dem von Ayende hier vorgestellten Code:

Ссылка

Ich habe eine einfache Klasse geschrieben, um genau das zu tun:

%Vor%

Bei bestimmungsgemäßem Gebrauch:

%Vor%

Aber es gibt immer 0 für Abfrageanzahl zurück. Keine SQL-Anweisungen werden protokolliert.

Wenn ich jedoch Nhibernate Profiler verwende und dies in meinem Testfall aufrufe:

%Vor%

Wenn NHProf einen ähnlichen Ansatz verwendet, um Protokollierungsausgaben von NHibernate zur Analyse über log4net usw. zu erfassen, beginnt mein QueryCounter zu arbeiten.

Es sieht so aus, als ob ich etwas in meinem Code verpasse, um log4net korrekt für die Protokollierung von nhibernate sql zu konfigurieren ... hat irgendjemand irgendwelche Hinweise darauf, was ich noch tun muss, um die SQL-Logging-Ausgabe von Nhibernate zu bekommen?

Zusätzliche Informationen:

Logging.config:

%Vor%

show_sql: true

Basierend auf der jfneis-Antwort habe ich eine viel einfachere Klasse geschrieben, die nur die Fabrikstatistiken von NHibernate verwendet:

%Vor%

Was gut funktioniert, sobald die Statistiken aktiviert sind.

    
Bittercoder 22.04.2010, 04:25
quelle

1 Antwort

13

Es gibt eine andere (einfachere, IMO) Möglichkeit zu behaupten, ob der Cache getroffen wird oder ob Abfragen ausgeführt werden: mit Statistik.

Zuerst müssen Sie Statistiken in Ihrer NH-Konfigurationsdatei aktivieren:

%Vor%

Danach können Sie Ihre Sitzungsfabrik fragen, wann immer Sie wollen, wie es läuft. Sie haben über den L2-Cache-Test gesprochen, sodass Sie so etwas haben könnten:

%Vor%

Wenn Sie jedoch die Anzahl der Abfragen wirklich wünschen, gibt es viele andere Optionen in der Statistics-Schnittstelle:

%Vor%

Nun, das ist es. Hoffe, das hilft dir als mir geholfen.

Grüße,

Filipe

    
jfneis 23.04.2010, 18:01
quelle