- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在进行单元测试以测试我编写的算法,不幸的是,由于这个错误,这些测试甚至无法运行:
[10-6-2018 00:12:00 Informational] ========== Run test finished: 0 run (0:00:06,5685302) ========== [10-6-2018 00:12:04 Informational] ------ Run test started ------ [10-6-2018 00:12:09 Error] The active test run was aborted. Reason: Process is terminated due to StackOverflowException.
这些都是我的单元测试:
namespace AlgoritmeTest
{
[TestClass]
public class AlgoritmeTests
{
[TestMethod]
public void TestAddingWagonToTrain()
{
Train train = new Train();
Wagon wagon = new Wagon(10);
List<Wagon> expected = new List<Wagon>();
expected.Add(wagon);
train.AddWagon(wagon);
List<Wagon> actual = train.GetWagons();
Assert.AreEqual(expected, actual, "Failed to add wagon to train");
}
[TestMethod]
public void TestAddingAnimalToWagon()
{
Train train = new Train();
Wagon wagon = new Wagon(10);
Animal animal = new Animal("Goudvis", AnimalFood.Meat, AnimalSize.Big);
List<Animal> expected = new List<Animal>();
expected.Add(animal);
wagon.AddAnimal(animal);
List<Animal> actual = wagon.GetAnimals();
Assert.AreEqual(expected, actual, "Failed to add animal to wagon");
}
[TestMethod]
public void TestIfAnimalsAreReturned()
{
Animal animal = new Animal();
Animal goudvis = new Animal("Goudvis", AnimalFood.Meat, AnimalSize.Big);
Animal visstick = new Animal("Visstick", AnimalFood.Meat, AnimalSize.Big);
animal.animalsFromTheCircus.Add(goudvis);
animal.animalsFromTheCircus.Add(new Animal("Potvis", AnimalFood.Plants, AnimalSize.Medium));
animal.animalsFromTheCircus.Add(new Animal("Zalm", AnimalFood.Meat, AnimalSize.Small));
animal.animalsFromTheCircus.Add(visstick);
animal.animalsFromTheCircus.Add(new Animal("Varkenshaasje", AnimalFood.Plants, AnimalSize.Big));
List<Animal> expected = new List<Animal>();
expected.Add(goudvis);
expected.Add(visstick);
List<Animal> actual = animal.GetAllBigMeatEaters();
Assert.AreEqual(expected, actual, "Failed to get all animals which meet criteria");
}
[TestMethod]
public void TestIfAlgorithmStepWorks()
{
Program program = new Program();
Animal animal = new Animal();
Wagon wagon = new Wagon(10);
Wagon wagon2 = new Wagon(10);
Animal goudvis = new Animal("Goudvis", AnimalFood.Meat, AnimalSize.Big);
Animal visstick = new Animal("Visstick", AnimalFood.Meat, AnimalSize.Big);
animal.animalsFromTheCircus.Add(goudvis);
animal.animalsFromTheCircus.Add(visstick);
animal.animalsFromTheCircus.Add(new Animal("Potvis", AnimalFood.Plants, AnimalSize.Medium));
animal.animalsFromTheCircus.Add(new Animal("Zalm", AnimalFood.Meat, AnimalSize.Small));
animal.animalsFromTheCircus.Add(new Animal("Varkenshaasje", AnimalFood.Plants, AnimalSize.Big));
wagon.AddAnimal(goudvis);
wagon2.AddAnimal(visstick);
Train expected = new Train();
expected.AddWagon(wagon);
expected.AddWagon(wagon2);
program.SetUpProgram(animal.animalsFromTheCircus);
Train actual = program.AddAllMeatEaters();
Assert.AreEqual(expected, actual, "Failed to get all animals which meet criteria and place them in train according to alogrithm");
}
}
}
Animal.cs
public class Animal
{
private string animalName;
private AnimalFood animalFood;
private AnimalSize animalSize;
public Animal(string animalName, AnimalFood animalFood, AnimalSize animalSize)
{
this.animalName = animalName;
this.animalFood = animalFood;
this.animalSize = animalSize;
}
public Animal()
{
}
public List<Animal> animalsFromTheCircus = new DataGenerator().GenerateAnimals(100);
public List<Animal> GetallAnimals()
{
return animalsFromTheCircus;
}
public List<Animal> GetAllBigMeatEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Big && animal.getAnimalFood() == AnimalFood.Meat).ToList();
}
public List<Animal> GetAllBigMeatEaters(List<Animal> animalsFromTheCircus)
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Big && animal.getAnimalFood() == AnimalFood.Meat).ToList();
}
public List<Animal> GetAllSmallMeatEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Small && animal.getAnimalFood() == AnimalFood.Meat).ToList();
}
public List<Animal> GetAllBigPlantEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Big && animal.getAnimalFood() == AnimalFood.Plants).ToList();
}
public List<Animal> GetAllMediumMeatEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Medium && animal.getAnimalFood() == AnimalFood.Meat).ToList();
}
public List<Animal> GetAllMediumPlantEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Medium && animal.getAnimalFood() == AnimalFood.Plants).ToList();
}
public List<Animal> GetAllSmallPlantEaters()
{
return animalsFromTheCircus.Where(animal => animal.getAnimalSize() == AnimalSize.Small && animal.getAnimalFood() == AnimalFood.Plants).ToList();
}
public string getAnimalName()
{
return this.animalName;
}
public AnimalFood getAnimalFood()
{
return this.animalFood;
}
public AnimalSize getAnimalSize()
{
return this.animalSize;
}
}
Wagon.cs
public class Wagon
{
private List<Animal> animals;
private int maxSize;
public Wagon(int maxSize)
{
this.animals = new List<Animal>();
this.maxSize = maxSize;
}
public void AddAnimal(Animal animal)
{
this.animals.Add(animal);
}
public List<Animal> GetAnimals()
{
return this.animals;
}
}
Train.cs
public class Train
{
private List<Wagon> wagons;
public Train()
{
this.wagons = new List<Wagon>();
}
public void AddWagon(Wagon wagon)
{
this.wagons.Add(wagon);
}
public List<Wagon> GetWagons()
{
return this.wagons;
}
}
我的测试有问题吗,为什么它们不运行?
最佳答案
您显示的代码中没有循环引用,我的灵敏的感觉告诉我问题出在这里
public List<Animal> animalsFromTheCircus = new DataGenerator().GenerateAnimals(100);
更新
每次你创造动物时,它都会产生动物,动物又会产生动物,奇点就会发生。整个宇宙都被吸入
更新 2
这里也存在一个严重的关注点分离问题,我的意思是为什么类动物甚至有动物列表,我知道的动物中没有亚动物(在任何常识)..
关于c# - 单元测试不会运行 : process is terminated due to StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50778995/
dataElementsList : TypesAndData.DataElement list 是一个包含 50,000 条记录的列表(实际上更多,但让我们从小处开始)。我正在尝试序列化为 JSON
我试图序列化一个自定义类型,该类型在其他成员中包含一个字典。与字典的键和值相关联的类型是实现的接口(interface)。 字典看起来像 Dictionary TypeA implements IT
我有一个 C# 工厂对象,它使用对象列表作为源,通过工厂方法创建对象。 对象列表的创建方式如下: public WidgetFactory() { widgetLibrary
我正在 GenericList 类中实现递归快速排序方法。我将有第二种方法,它接受一个compareDelegate来比较不同的类型,但出于开发目的,我对GenericList进行排序。 我根据列表大
我为我的作业编写了一种方法,用于通过递归计算整数数组的所有排列。 (我正在尝试实现回溯算法)。但计算超过 7 个数字的前突变时会导致 StackOverflowException 。我不知道如何解决这
我正在尝试将一个大文件拆分成许多小文件。每个拆分发生的位置基于检查每个给定行的内容返回的谓词(isNextObject 函数)。 我试图通过 File.ReadLines 函数读取大文件,这样我就可以
我正在使用 onSuccessCallBack() 接口(interface)方法同步大量数据。按照如图所示的方法将数据发送到服务器。在这里我面临 StackOverflowException 的问题
我必须递归调用一个函数。但片刻之后它会抛出 StackOverFlowException。当我使用 Invoke(new Action(Start)) 方法时,它会抛出相同的异常,但不会在很长一段时间
我有一些依赖于 HttpContext.Cache 的代码,我希望它在满足特定条件时重新缓存某些内容。但是,这会引入潜在的堆栈溢出,我不确定这里的适当方法是什么。 看看这段代码: void OnCac
我将我的代码剥离到导致问题的部分。代码在这里来回跳转第5行和第9行,导致stackoverflowexception。 我该如何做呢?我需要 Game 类中的 Platform 实例才能在函数中使用。
我的问题很简单。我有这个新表格,我只是编写代码: public partial class Form1 : Form { public Form1() { In
根据我的question (通用方法的可重用非通用方法)我已经实现了提供的解决方案,但经过一些重构(将代码移动到基类)后,我的代码导致了我不理解的 StackOverflowException。 调用
背景。我的脚本在递归搜索大字符串中的特定文本时遇到 StackOverflowException。循环不是无限的;问题发生在 9,000-10,000 次合法搜索之间(对于特定搜索)——我需要它继续进
请帮助我解决 System.StackOverflowException我想用 .aspx 将记录写入数据库我使用 4 层架构来实现这一切都正常但是当我编译页面然后它显示要插入数据的字段时,当我将数据
我正在尝试回答 my own old question基于我唯一的(无效的)答案。 这个想法是为了简化按值排序的映射的创建: public class SortedByValueMap> implem
我目前正在制作有界数组堆栈。此方法将大于存储容量的数组抛出到 StackOverflowException,除了我不断收到“throws StackOverflowException 部分”的错误消息
我正在使用以下方法递归迭代对象的属性: void GetProps(object obj) { if (obj == null) return; var objType
我想做一个非常简单的任务,它以某种方式使程序崩溃。 我有一个包含数字的列表,所有数字都是唯一的。超过一定数量,我想倒序。 示例:5, 16, 11, 3, 8, 4 -> 5, 16, 11, 4,
我正在尝试编写一个函数来检查字符串是否为回文,并使用 this example ,我正在尝试使用递归匿名函数反转字符串: static Boolean checkPalindromeAnonRec(s
这段代码有什么问题?我不断收到 StackOverlflowException.. public class Places { public string Title { get; set;
我是一名优秀的程序员,十分优秀!