我为一个名为 game.cs 的类中的方法创建了一个单元测试。出于某种原因,当我引用该类时,我无法创建新实例。如何使这个类可访问,以便我可以测试我的代码?
文件层次结构和解决方案:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BowlingKataTDD;
namespace BowlingKataTDDTest
{
[TestClass]
public class BowlingKataTDDUnitTests
{
[TestMethod]
public void DoesGameExist()
{
//arrange
BowlingKataTDD.
}
}
}
BowlingKataTDD项目:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingKataTDD
{
class Game
{
static void Main(string[] args)
{
}
}
}
答案 0 :(得分:6)
创建类public
,以及需要在外部调用的该类的任何成员(例如通过单元测试):
public class Game
{
public static void Main(string[] args)
{
}
}
答案 1 :(得分:5)
您没有看到类的原因是它们是非公开的(默认情况下是内部的)。
有两种解决方案:
public
InternalsVisibleTo
attribute。要使用第二个解决方案,请打开AssemblyInfo.cs
并添加以下行:
[assembly: InternalsVisibleTo("BowlingKataTDDTest")]
BowlingKataTDDTest
是程序集的名称,如项目文件中所定义。
答案 2 :(得分:0)
使用新项目调用库是一个常见的错误,我能够解决它。通常很容易忘记将修改器从Visual Studio中的项目更改为public,因为默认情况下,新项目模板会创建该类,但不会将其设置为public。将Game类更改为public时,可以实例化Game对象。
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BowlingKataTDD;
namespace BowlingKataTDDTest
{
[TestClass]
public class BowlingKataTDDUnitTests
{
[TestMethod]
public void DoesGameExist()
{
//arrange
BowlingKataTDD.Game game = new BowlingKataTDD.Game();
}
}
}