agosto 2007 Blog Posts
Per testare in NUnit i metodi di persistenza (direttamente in Persistence o tramite provider e manager), siccome normalmente la classe SessionHelper carica la configurazione di NH leggendo dall'assembly in esecuzione, e siccome usando la gui di NUnit l'assembly in esecuzione è quello del progetto NUnit,
è necessario aggiungere al progetto di test un file di configurazione che sarà nella stessa directory del progetto NUnit collegato e che conterrà la configurazione per NH; nel progetto NUnit selezionare Project - Edit - Configurazione - File Name e indicare il nome del file di configurazione appena creato.
- installare, se necessario, NH
- aggiungere il progetto Persistence alla solution
- aggiungere a Persistence il riferimento a NHibernate.dll e ai progetti della solution necessari (BusinessObjetcts, ...)
- aggiungere al file di configurazione del progetto che verrà avviato la sezione per NH:
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
<add key="hibernate.connection.connection_string" value="Server=localhost; Integrated Security=SSPI; Database=ComLog;" />
<add key="hibernate.default_schema" value="dbo" />
<!-- General -->
<add key="hibernate.use_proxy_validator" value="true"/>
<!-- SQL Generation -->
<add key="hibernate.max_fetch_depth" value="2"/>
<add key="hibernate.show_sql" value="false"/>
<add key="hibernate.connection.release_mode" value="on_close" />
<!-- Reflection Optimizer: null | lcg | codedom...
Utilizzare NUnit in un progetto:
- installare, se necessario, il programma;
- aggiungere un progetto di test alla solution; in questo progetto:
- aggiungere un riferimento a nunit.framework.dll
- aggiungere le classi di test (TestFixture; DEVONO ESSERE PUBLIC) e i test veri e propri (DEVONO RITORNARE VOID E NON DEVONO AVERE PARAMETRI):
using NUnit.Framework;
using BusinnessObjects;
namespace Test
{
[TestFixture]
public class UserTest
{
[Test]
public void DefaultUserAreNotDestination()
{
User user = new User();
user.Name = "Pinco Pallino";
Assert.AreEqual(false, user.IsDestination);
}
- avviare il programma di esecuzione dei test (nunit-gui.exe) e in esso:
- definire un nuovo progetto di test e salvarlo
- aggiungere al progetto di...
The ?? operator returns the left-hand operand if it is not null, or else it returns the right operand.
int y = x ?? -1;
oppure
if ((reader.GetAttribute("showheader") ?? String.Empty).ToUpper() == "TRUE")
Aggiungo al progetto il file XML e imposto Build Action = Embedded resource.
Se necessario creo un nuovo file di definizione delle risorse dalle proprietà del progetto.
Nel file di definizione delle risorse aggiungo una risorsa di tipo File.
A run-time recupero il file:
using System.Resources;
...
ResourceManager rm = new ResourceManager("NomeProgetto.Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
Object file = rm.GetObject("NomeRisorsa");
String info = file.ToString();
Lunedì sera ho imboccato l'autostrada per recarmi da un cliente e, poco dopo, ho notato l'accensione di una spia sul cruscotto della mia nuova Meriva, una spia con una chiave inglese disegnata su un'autovettura ... ahi ahi ahi ... immediatamente ho realizzato che l'auto non accelerava più, nemmeno premendo a tavoletta. Ho raggiunto il primo casello viaggiando sulla corsia di emergenza ai 70 km/h e ho imboccato la tangenziale per ritornare a casa. Giunto ad una piazzola mi sono fermato per consultare il manuale che consigliava di recarsi alla prima autofficina ma, spulciandolo a fondo, diceva anche che a volte per...
Contesto: voglio creare un controllo che generi html "puro" a mia completa discrezione.
Quasi-soluz. 1: creo uno user control contenente solo un literal. Creo un metodo di rendering che costruisce la stringa html e la assegna alla proprietà Text del literal. Se non ho bisogno di settare proprietà dal codice che utilizza lo user control posso richiamare il metodo di rendering sul page load. In caso contrario devo dichiarare come public il metodo di rendering e chiamarlo esplicitamente dal codice utilizzatore dopo aver impostato le proprietà necessarie (magari per definire la sorgente dati).
Soluzione 2: sovrascrivo il metodo di rendering che tutti...