Autor Beitrag
M0rgenstern
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 28.08.11 11:56 
Hallo Liebe C#Sharp Community,
Ich bin neu hier und möchte euch somit erstmal alle begrüßen, bevor ich meine erste Frage stelle, also: Hallo.

Mein Problem ist folgendes: Test Driven Development hats mir irgendwie angetan und deshalb habe ich NUnit auf meinem Rechner installiert. Ich bekomme es auch hin, einen Verweis auf ein anderes Projekt, das auch im Projektmappen-Explorer (Microsoft Visual C# 2010 Express) geöffnet ist.
Ich bin momentan dabei ein Hangman Spiel zu schreiben und möchte dafür Tests schreiben.
Ich habe also ein Testprojekt mit der NUnit GUI und ein Projekt in dem die Form fürs Hangman Spiel und die zugehörigen Klassen liegen.
Die Testklassen liegen in dem NUnit Projekt.
Mein Problem ist jetzt, dass ich von den NUnit Testklassen nicht auf die Klassen im Hangman Projekt zugreifen kann.
Also, ich habe dort eine Klasse "Hangman_Word_Class.cs", die auch eine öffentliche Methode hat. Ich kann aber von einer NUnit Testklasse nicht darauf zugreifen. Ich habe oben schon ein "using Hangman" eingefügt, aber wenn ich dann im Code auf die Klasse zugreifen will, z.B. indem ich schreibe Classes (also der Ordner mit den Klassen), dann nimmt er das gar nicht, und auch wenn ich "Hangman." schreibe, darf ich weder Classes noch Hangman_Word_Class auswählen.

Kann mir bitte jemand weiterhelfen?
Also, wie kann ich dem Projekt begreiflich machen, dass es auf die Klasse zugreifen darf?

Lg, M0rgenstern


Moderiert von user profile iconKha: Topic aus WinForms verschoben am So 28.08.2011 um 12:48
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 28.08.11 12:09 
Hallo und :welcome:

wenn ich deinen Satz
M0rgenstern hat folgendes geschrieben:
Ich bekomme es auch hin, einen Verweis auf ein anderes Projekt, das auch im Projektmappen-Explorer (Microsoft Visual C# 2010 Express) geöffnet ist.

richtig verstehe, so hast du schon den Verweis auf das Hangman-Projekt zu deinem NUnit-Testprojekt hinzugefügt?
Dies sollte eigentlich ausreichen, damit du dann auf die Namensbereiche und (öffentlichen) Klassen des anderen Projekts zugreifen kannst.
Oder ist deine Hangman-Klasse nicht als "public" deklariert (also nicht nur die Methoden, sondern die Klasse selbst)?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public class Hangman_Word_Class
{
    public Hangman_Word_Class()
    {
       // ...
    }
}


Und zu:
M0rgenstern hat folgendes geschrieben:
indem ich schreibe Classes (also der Ordner mit den Klassen)

Nicht der Ordnername ist wichtig, sondern nur der Namensbereich (namespace). Obwohl es standardmäßig so ist, daß VS den Namensbereich entsprechend der Ordnerstruktur anlegt.

P.S. Das "Class" im Klassennamen ist überflüssig und solltest du wieder entfernen.
M0rgenstern Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 28.08.11 12:24 
Hey Th69,
Ja, der Verweis auf das Hangman Projekt steht schon im NUnit Projekt.
Die Klasse im Hangman Projekt sieht so aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Hangman.Classes
{
    public class Hangman_Word
    {
        protected string[] saPossibleWords;

        public string[] GetArray()
        {
            return saPossibleWords; 
        }

        public static string getHello()
        {
            return "Hello";
        }
    }
}


Die zweite Methode ist nur um das ganze ohne Instanz zu testen. Aber es geht einfach nicht.

Wegen dem Ordner: Ich weiß, dass es an dem Namespace liegt, aber du siehst ja selbst, dass er den Namespace nach dem Ordner benennt.

Lg, M0rgenstern
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 28.08.11 12:52 
Wenn dir nicht einmal nach "Hangman" etwas angeboten wird, kann etwas an der Projektreferenz nicht ganz stimmen; da du aber selbst sagst, dass sie da ist, fällt mir von hier aus auch nichts mehr ein. Wenn das Projekt sowieso noch klein ist, kannst du es einfach mal hochladen?

PS: Ein Subnamespace "Classes" hört sich ebenso redundant an wie "Class" im Klassennamen. Oder hast du da noch andere Subnamespaces geplant ;) ?

_________________
>λ=
M0rgenstern Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 28.08.11 13:00 
Hey.
Es klappt.
Ich habe folgendes gemacht: In den Verweisen einfach aktuellen Verweis gelöscht und wieder hinzugefügt.
Und jetzt klappt es.

Das mit "Classes" ist vielleicht redundant, aber ich mache das lieber so, um eine ordentliche Struktur zu haben, falls noch mehr Ordner gebraucht werden.

Vielen Dank.

Lg, M0rgenstern