Das ist falsch, parso hat vom FixtureSetup geschrieben das ist in der Tat nicht ausreichend. Aber auf der Seite war es unten mit als Unterlink aufgeführt den ich wohl übersehen habe.
Das von mir gepostete ist ein SetUp Attribute und erfüllt genau das was ich brauche, zwar mit ein paar unschönen Randbedingungen aber taugt trotzdem!
Edit: Ich nehme alles zurück. Die Doku von den Attributen ist irreführend bzw. verwirren sie zumindest mich. DAs SetUp Attribute ist das falsche weil das für jeden Test im Fixture gerufen wird. Das SetupFixture Attribut kann dazu benutzt werden.
Zitat
This is the attribute that marks a class that contains the one-time setup or teardown methods for all the test fixtures under a given namespace. The class may contain at most one method marked with the SetUpAttribute and one method marked with the TearDownAttribute.
There are a few restrictions on a class that is used as a setup fixture.
* It must be a publicly exported type or NUnit will not see it.
* It must have a default constructor or NUnit will not be able to construct it.
Sorry für die Missverständnisse ich versuch das jetzt mal so.
@Mabo: Die Tests sind in sich abgeschlossen, aber dadurch eben langsam (In unserem Fall). Daher die versuchte Optimierung.
Es gibt via Addin die Möglichkeit, sich in den TestRunStarted und TestRunFinished zu hängen, jedoch gibt es diese Möglichkeit nicht als Attribut. Warum das so ist bleibt das Geheimnis der NUnit Entwickler.
Und in wieweit soll mir das helfen? Die Attrbiute sind mir doch längst bekannt nützen aber nichts, denn ich brauche einen Call vor dem gesamten Lauf und nach dem gesamten lauf.
Wir lassen verschiedene TestFixtures innerhalb eines Assemblies laufen. Was wir wollen ist nicht für jedes Fixture das unterliegende Framework zu initialisieren und im FixtureTearDown zu Disposen. Wir wollen das Ganze einmal pro Lauf. Jetzt könnte ich mich zwar auf das AppDomain.CurrentDomain.ProcessExit hängen um dort zu Disposen, das löst aber nicht alle Probleme.
Das Initialisieren des Frameworks muss zwingend immer vom gleichen Thread accessed werden (Das kann ich leider nicht ändern). Das geht so lange ich einen gesamten Lauf für sich betrachte. Startet aber jemand ein einzelnes Fixture, z.B. via UI und anschließend ein weiteres, dann knallt es beim 2ten weil das Fixture in einem neuen TestRunner der in einem neuen Thread läuft ausgeführt wird. Ich habe schon versucht das zu unterbinden aber keine Lösung gefunden. Was mir eigentlich fehlt ist ein Event/Attribute ala der TestLauf ist beendet. Dort kann ich dann einfach Dispose vom Framework aufrufen. Oder aber der TestRunner wird immer mit dem gleichen Thread erzeugt solange die NUnit Instanz die gleiche ist.
Bin für jede Info Dankbar.
Edit: Die Möglichkeit IAddin zu implementieren ist nicht praktikabel weil die Tests in verschiedenen Umgebungen ausgeführt werden, die das unter Umständen nicht unterstützen.
Ich habe ein Problem mit einer eigenen FxCop Regel. Ich möchte alle Methoden Aufrufe analysieren und dabei werden nicht alle aufgelöst. Speziell die innerhalb eines "yield return" werden nicht aufgelöst. Gegeben ist exemplarisch folgendes:
public interface IInterface
{
void Foo();
}
internal class Interface : IInterface
{
private readonly object m_Obj;
public Interface(object obj)
{
m_Obj = obj;
}
public void Foo()
{
throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
var interfaces = GetInterfaces();
}
private static IEnumerable<IInterface> GetInterfaces()
{
yield return new Interface(Resolve());
}
private static object Resolve()
{
return new object();
}
}
Worum es mir geht ist der Methoden Call von Resolve() innerhalb des yield return. Der IL Code sieht so aus:
.method private hidebysig static class [mscorlib]System.Collections.Generic.IEnumerable`1<class OpCode.IInterface>
GetInterfaces() cil managed
{
// Code size 14 (0xe)
.maxstack 1
.locals init ([0] class OpCode.Program/'<GetInterfaces>d__0' V_0,
[1] class [mscorlib]System.Collections.Generic.IEnumerable`1<class OpCode.IInterface> V_1)
IL_0000: ldc.i4.s -2
IL_0002: newobj instance void OpCode.Program/'<GetInterfaces>d__0'::.ctor(int32)
IL_0007: stloc.0
IL_0008: ldloc.0
IL_0009: stloc.1
IL_000a: br.s IL_000c
IL_000c: ldloc.1
IL_000d: ret
} // end of method Program::GetInterfaces
Im FxCop hab ich schon mehreres Versucht. Es wird für die Rückgabe ein Compile Generiertes Object zurück gegeben. Soweit so klar. Aber ich komme einfach nicht an den MethodCall vom Resolve() ran.
Die userId wird in deinem Fall Lamda immer userId == 123 sein. So wird es also nicht funktionieren.
Du müsstest die userId im Lamda irgendwie vom WebRequest ermitteln.
ich bin auf der Suche nach einer Möglichkeit alle Änderungen an einem Source Item auf einem beliebigen Child Branch zu ermitteln. Gegeben ist z.B. folgende Branch Hierarchie.
A
/ \
B C
/ \
E D
Wenn ich nun eine Item in der Hand habe z.B. $D\file.cs und mir dann mit Query History alle Changesets dieses Items hole bekomme ich leider nur die Changesets von diesem Branch, nicht jedoch die Änderungen auf E,C,A und B.
var changes = m_Version.QueryHistory(@"$D:\File.cs", VersionSpec.Latest, 0, RecursionType.Full, null, new ChangesetVersionSpec(1), VersionSpec.Latest, int.MaxValue, true, false);
Ich hab jetzt schon einiges versucht mit TrackMerge und QueryMerge jedoch ist die TFS API Doku nicht gerade hilfreich. Wichtig ist das ich eine Lösung brauche die Branch unabhängig ist, daher die Branch Hierarchie ist mir unbekannt. Weiß einer einen performanten Weg dies zu erreichen?
kennt einer von euch ein Attribute das man an eine Methode/Property/Field schreiben kann um dem Resharper zu sagen das dieser Member keine direkte Referenzierung hat jedoch via Reflection gecalled wird?
ich such nach einem Event auf das ich micht anmelden kann damit ich notifiziert werde wenn sich die Netzwerkverbindung getrennt hat.
Connected->Unconnected
Unconnected->Connected
Versucht habe ich schon NetworkChange.NetworkAvailabilityChanged.
Das wurde jedoch nicht gefeuert, weder wenn ich das Netzkabel ziehe noch wenn ich die Schnittstelle deaktiviere.
BTW: Ich würde nur ungern auf die Netzwerkverbindung pollen.
Ich rede von *.cs Dateien. Ich glaube du hast mich falsch verstanden. In meinem Tool soll man eine selektiertes Source File in einer aktiven VS Instanz öffnen können.
ich suche eine kleines Beispielprogramm für Dokumentationszwecke an denen man Mocking Tests (Rhino) beispielhaft aufzeigen kann. Ich dachte da so an 10-15 Klassen die nach Möglichkeit SOLID entwickelt wurden und ein bisschen miteinander interagieren. Hat einer eine Idee wo ich da etwas einfaches und verständliches finden kann?
Das habe ich doch bereits schon mehrmals gemacht. Allerdings erhalte ich nie unused Methods. Auch in den Settings wie oben der dialog zeigt habe ich unter unused nur 4 Sachen gefunden die alle nicht das erwünschte ergeben!
First enable "Analyze Errors In Solution" (right-click on the Resharper icon in the status bar)
Es gibt bei mir ein Resharper Icon in der Statusbar. Und das Analyze Errors in Solution habe ich auch nirgend gefunden.
Edit: Habs jetzt in den Settings gefunden. Hab es mal angeschalten und schau mal ob jetzt nicht verwendete Interface Methoden von (internal deklariert) gefunden werden!
hab den neusten Resharper (7.1.1) drauf aber leider keine Lasche "unused Code" in dem Analyzing Result. Ich habe nur die folgenden:
Common Practices and Code Improvements
Compiler Warnings
Constrains Violations
Language Usage Opportunities
Potential Code Quality Issues
Redundancies in Code
Redundancies in Symbol Declarations
Kann man das noch irgendwo anschalten? Es sind in der analisierten Solution definitiv unbenutze Codestellen.
es gibt ja im Resharper das Find usage um z.B calls auf Methoden zu finden. Dann sucht der Resharper innerhalb der gesamten Solution nach Aufrufen dieser Methode. Das ist ein nettes Feature.
Ich bräuchte das aber für jede Methode an jedem Interface das in der Solution definiert ist. Und davon hätte ich gern alle Methoden die überhaupt nicht gerufen werden. (Die könnte ich dann nämlich löschen weil alle potentiellen Aufrufer innerhalb der gesamten Solution definiert sind).
Eventuell kennt einer ein VS2010 Plugin oder Resharper Plugin oder sogar ein Refector Plugin das mich bei diesem Prozess unterstützen kann.