如何用void返回类型模拟方法?
我实现了一个观察者模式,但我无法用Mockito模拟它,因为我不知道如何.
我试图在互联网上找到一个例子,但没有成功.
我的班级看起来像
public class World {
List<Listener> listeners;
void addListener(Listener item) {
listeners.add(item);
}
void doAction(Action goal,Object obj) {
setState("i received");
goal.doAction(obj);
setState("i finished");
}
private string state;
//setter getter state
}
public class WorldTest implements Listener {
@Test public void word{
World w= mock(World.class);
w.addListener(this);
...
...
}
}
interface Listener {
void doAction();
}
Run Code Online (Sandbox Code Playgroud)
系统不会通过模拟触发.=(我想显示上面提到的系统状态.并根据它们做出断言.
今年夏天,我用直接C编写了一个嵌入式系统.这是我工作的公司接管的现有项目.我已经习惯于使用JUnit在Java中编写单元测试,但是对于为现有代码(需要重构)编写单元测试的最佳方法以及添加到系统中的新代码感到茫然.
有没有办法让单元测试普通的C代码像使用JUnit进行单元测试Java代码一样简单?任何专门针对嵌入式开发(交叉编译到arm-linux平台)的见解都将非常感激.
如何使用Assert(或其他Test类?)来验证是否抛出了异常?
我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直无法找到合适的选项来保持完全符合TDD标准.那么,是否有一个完全符合TDD标准的JavaScript单元测试工具?
我需要为一个方法编写单元测试,该方法接受来自文本文件的流.我想做这样的事情:
Stream s = GenerateStreamFromString("a,b \n c,d");
Run Code Online (Sandbox Code Playgroud) 如果一个函数没有抛出预期的异常,那么如何编写一个单元测试失败?
什么是单元测试,集成测试,烟雾测试,回归测试以及它们之间有什么区别?我可以为每个工具使用哪些工具?
例如,我使用JUnit和NUnit进行单元测试和集成测试.有没有烟雾测试或回归测试工具?
到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
我知道我如何使用这些术语,但我想知道是否有单独测试的伪造,模拟和存根的可接受定义?你如何为你的测试定义这些?描述您可能使用每种情况的情况.
以下是我如何使用它们:
假:一个实现接口但包含固定数据而没有逻辑的类.根据实施情况,简单地返回"好"或"坏"数据.
Mock:一个实现接口的类,允许动态设置值以返回/异常从特定方法抛出,并提供检查是否已调用/未调用特定方法的功能.
存根:类似于模拟类,但它不提供验证方法是否已被调用/未调用的能力.
模拟和存根可以由模拟框架手动生成或生成.伪造的类是手工生成的.我主要使用模拟来验证我的类和依赖类之间的交互.一旦我验证了交互并且正在通过我的代码测试备用路径,我就会使用存根.我主要使用假类来抽象出数据依赖性,或者每次使用模拟/存根都太繁琐.
unit-testing ×10
c# ×2
definition ×2
java ×2
mocking ×2
tdd ×2
testing ×2
assert ×1
c ×1
embedded ×1
exception ×1
javascript ×1
mockito ×1
mstest ×1
python ×1
stream ×1
string ×1
stub ×1
terminology ×1
void ×1