Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unit testing in visual studio 2010 without a main method

Trying to unit test some simple code for a class project, however every time I try to run the test I get an error that there is no home.exe and no main static main method. However, we haven't gotten to the point where we are supposed to have either of those things yet, so how can I run the test without them?

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();

        }
    }
}
like image 987
Expecto Avatar asked Dec 21 '25 00:12

Expecto


1 Answers

OK, a couple things here.

  1. Make sure that your Output type for your main project (the project to be tested) is ClassLibrary
  2. Use Assertions in your tests

I created a ClassLibrary solution called ExampleLibrary. Created a class called InventoryType and copied in your code e.g.

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

namespace ExampleLibrary
{
    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; 
            } 
        } 
    }
}

I then created a Unit Test and coded it as follows:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using ExampleLibrary;

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

            Assert.IsTrue(select.Validate());
            select.InventoryTypes = null;
            Assert.IsFalse(select.Validate());
        }
    }
}

I compile and run the test as described above and it runs and returns Test Passed.

like image 119
Kevin Avatar answered Dec 23 '25 13:12

Kevin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!