Expecto
Expecto

Reputation: 521

namespace not being recognized?

I created a very very simple domain layer in visual studio (2010). I then used the new test wizard to create a basic unit test. However when I try to put in the using statement so that I can test my code.. it says my namespace could not be found... This is my first time using visual studio so I am at a loss as to what I am doing wrong.

My code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Home
{
    class InventoryType
    {

        /// <summary>
        /// Selects the inventory type and returns the selected value
        /// </summary>
        public class InventorySelect
        {
            private string inventoryTypes;
            public String InventoryTypes
            {
                set
                {
                    inventoryTypes = value;
                }

                get
                {
                    return inventoryTypes;
                }
            }


            /// <summary>
            /// Validate that the inventory is returning some sort of value
            /// </summary>
            /// <returns></returns>
            public bool Validate()
            {
                if (InventoryTypes == null) return false;
                return true;
            }
        }
    }
}

My Test Code

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Home.InventoryType.InventorySelect;

namespace HomeTest
{
    [TestClass]
    public class TestInventoryTypeCase
    {
        [TestMethod]
        public void TestInventoryTypeClass()
        {
            InventorySelect select = new InventorySelect();
            select.inventoryTypes = "Collection";

            if (Validate() = true)
                Console.WriteLine("Test Passed");
            else
                if (Validate() = false)
                    Console.WriteLine("Test Returned False");
                else
                    Console.WriteLine("Test Failed To Run");

            Console.ReadLine();

        }
    }
}

Upvotes: 1

Views: 3049

Answers (4)

Mahshid Zeinaly
Mahshid Zeinaly

Reputation: 3978

When you create a "multi-project" in a solution (by adding projects to any existing solution), the projects do not know about each other.

Go to your test project on Solution Explorer and under "References", right click and select "Add Reference". Then select "project" tab and you will be able to add your project's reference to the test project.

Also, make sure you define the classes in the project as "public" to be able to access them in test project.

namespace Home
{
    public class InventoryType
    {
            ...
    }
}

Note that you still need the "using" keyword on top of your C# test class:

using Home;

namespace HomeTest
{
    public class TestInventoryTypeCase
    {
           ...
    }
}

Upvotes: 1

Jason
Jason

Reputation: 1383

using refers to a namespace, not a specific class (unless you add an alias for the class name). Your using statement should only include the word Home.

using Home.InventoryType.InventorySelect; 
//becomes
using Home;

Here is a link to MSDN on using directive: using Directive (C#)

Upvotes: 4

Reg Edit
Reg Edit

Reputation: 6914

I'm assuming your test class is in its own project, so you need to add a reference to that project. (A using statement doesn't add a reference, it merely allows you to use a type in your code without fully qualifying its name.)

Upvotes: 2

Siva Charan
Siva Charan

Reputation: 18064

Declare InventoryType class as public

InventorySelect class can be private rather than public

Upvotes: 2

Related Questions