我想为这个函数编写JUNIT测试
public static int creerFichierXml(TextField titre_projet,TextField description1,TextField svn,TextField planning1,TextField planning2,TextField goals,TextField mail){
//Créer le fichier XML et l'envoyer au serveur
int returnCode = 0;
ParseToXML j=new ParseToXML();
t
我如何在另一个类的方法中模拟这个类?
例如,
protected function buildRequest($params)
{
return new \Request();
}
public function getPayload($params)
{
$request = $this->buildRequest($params);
....
}
我可以嘲笑buildRequest吗?
我需要测试这个方法getPayload($params),但是我得到了这个错误:
Class 'Request' not found in...
我刚接触过单元测试和PHPUnit,但我最近读了很多关于设计模式和孤立测试的文章,我决定重构一个我正在开发的应用程序,以摆脱静态类、单例、硬编码依赖项和全局范围上定义的其他任何东西,希望使它“可测试”,而不会在将来成为一个麻烦,因为它是一个长期的项目。
到目前为止,我相信我理解单元测试背后的理论,但我想知道,在一个将对象的嵌套依赖关系委托给一个工厂的场景中,人们应该如何进行单元测试才能完成“工厂”,或者测试它仅仅是多余的呢?测试“依赖链”同步工作的最佳方法是什么?
让我来解释一下这些问题。假设您有以下“遗留”代码:
class House {
protected $material;
因此,我的类结构如下:(请注意,我使用的是TestNG框架)。
public class A {
@Factory
public Object[] tst_createFactoryTests() {
// Creates test classes if NUM is positive
}
}
public class B extends A {
private static final int NUM = 10;
}
public class C extends A {
private static final int NUM =
我正在尝试测试一个使用工厂注入的类。我有一个类,它实例化同一个对象的两个副本(具有不同的配置)来控制硬件。我试图测试类的行为,同时模拟硬件调用。
我向构造函数中注入了一组工厂委托,以便该类能够根据需要实例化硬件类。但是,我无法解决如何在Autofac.Extras.Moq包中控制或创建工厂方法。包中似乎不支持此功能。
我在找一个同等的电话:
mock.Provide<IHWController>(//created by factory delegate)
我希望根据用于实例化HWcontroller的参数创建具有行为的特定模拟对象。我想做的事有可能吗?
class SystemU
给定这个类:
class MyBuilder {
public function build($param1, $param2) {
// build dependencies ...
return new MyClass($dep1, $dep2, $dep3);
}
}
我如何对这个类进行单元测试?
单元测试意味着我想测试它的行为,所以我想测试它用正确的依赖项构建我的对象。但是,new指令是硬编码的,我不能模拟它。
class MyBuilder {
public function build($classname, $para
我正在学习工厂方法设计模式,我很难理解它到底要解决什么和如何解决。
让我们首先介绍维基百科用来作为讨论基础的例子。
📷
因此,产品基本上是MagicRoom和OrdinaryRoom,两者都来自于Room。对于创建者,我们有基类/接口MazeGame,它定义了方法makeRoom,子类是MagicMazeGame和OrdinaryMazeGame。现在,客户可以选择:
MazeGame game = new OrdinaryMazeGame()
or
MazeGame game = new MagicMazeGame()
好的,这就是我们可以讨论的一些例子。
维基百科将动机描述如下:
处理创建
我有一门根据服务而定的课程。我已将其登记如下:
container.Register<IMain, Main>();
container.Register<IChild, Child>();
在为该类编写测试时,我希望在IChild中模拟其中一个方法。所以我有mockIChild.Setup(...etc)。
但是您不能注册模拟类型,所以我必须在测试中手工实例化Main,对吗?
或者,在简单的喷射器或MSTest的深度中有什么神奇的东西可以做相当于:
[TestMethod]
public void foo()
{
var mockChild = new Moc
我试图在两个不同的条件下运行一个具有多个测试的类。基本上,我有一堆与搜索相关的测试。我正在添加新搜索策略的新功能,同时希望在这两种配置下运行已经编写的测试。由于我们有多个类,每个类都有多个测试,所以我想尽可能地简化这个过程。理想情况下,最好使用数据提供程序在@BeforeClass中进行设置,这样类中的所有测试基本上可以在不同的配置下运行两次,但看起来是不可能的。
现在我有:
public class SearchTest1 {
@Test(dataProvider = "SearchType")
public void test1(SearchType sea
我有一个类,它是其他一些专门处理行为的类的基础:
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
类CounterTask继承自任务
class CounterTask < Task
end
这一切都很好,直到我尝试测试基类,因为它必须有一个类型。
FactoryGirl.define do
fact
我最近发现了坚实的原则,我正在努力学习如何正确地应用它们。我有一个具有巨大界面的应用程序:
public interface NotificationService {
public void sendNewProjectRequestNotificationToDesigners(String projectId);
public void sendNewProjectAcceptedNotificationToCustomer(String projectId);
public void sendNewProjectRejectedNotificationToCustomer(
我已经安装了一个android应用程序,用于使用Hilt进行依赖注入,并且希望对我的片段进行单元测试。
目前,我正在使用以下方法创建视图模型:
private val viewModel: ExampleViewModel by viewModels()
我正在创建用于使用代码进行测试的片段。
我需要用一个模拟替换这个ExampleViewModel,我该怎么做呢?
在抽象工厂中,你声明一个负责创建对象的类型。
这将防止需要像这样的开关:
if( type == ONE ) {
doOne();
} else if( type == TWO ) {
doTwo();
} etc.
或者是相同的:
switch( type ) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
etc....
}
如下所示:
MyAbstractFactory factoryInstance = ... ?
SomeObject ob