我正在使用一个网络项目:
- Java
- Jetty
- Fitnesse 工具
- 等等。
我很难模拟/生成 SocketTimeoutException,更多信息如下:
我们如何测试:
是一个 TDD 项目,所以我们有一堆 UT。对于“真实”测试,我们使用上面提到的工具。(健身)
“问题”:
我必须模拟服务器中可能发生的许多问题。为此,我编写了一个简单的 servlet 来模拟我的 WebServer。
但是对于这个用例,我需要在我的模拟器中模拟一个 SocketTimeoutException。我想在模拟器中休眠,但我认为这可能会导致客户端请求超时。
提前致谢
最近我想通过开发一个真实的东西学习TDD,所以我决定使用简单的数据打包器/解包器.在纸上设计后,一切看起来都不错,但是当我尝试编码时,我意识到我不知道如何测试它,所以在TDD中 - 如何做任何事情.
我有两个班:ArchiveReader和ArchiveWriter.问题是,当我将某些内容保存到文件中时,ArchiveWriter我无法正常测试它ArchiveReader,没有它我不得不逐字节地比较输出,我认为这不是一个好主意 - 次要的,相关的更改可能会在以后发生.ArchiveReader测试也需要阅读,所以我必须ArchiveWriter用来制作测试包.
TDD在这方面失败了吗?有没有方法来测试这样的案例?
我是tdd和mockito web框架的新手.
基本上这是类中的getter方法:
public Long getDeviceManufactureId()
{
return deviceManufacturerId;
}
Run Code Online (Sandbox Code Playgroud)
我怎么写单元测试?
到目前为止我在想这个:
dem是该类的名称
@Test
public void testGetDeviceManufactureIdreturnsDeviceManufactureId()
{
assertEquals("Richard", dem.getDeviceManufactureId());
}
Run Code Online (Sandbox Code Playgroud) 我开始学习如何进行测试驱动的开发,并且正在使用Swift。我想有一个测试应该失败,然后编写使它通过所需的代码。据我了解,测试应该成功运行,只是失败。但是,在Swift中,当我尝试编写一个测试来检查对象特定属性的值时,如果该类还没有这样的属性(因为我想在创建之前先编写测试)我没有得到失败的测试,而是在尝试构建和运行测试时出现构建错误。错误是测试正在尝试访问给定对象不存在的属性。我会以错误的方式处理吗?还是这些测试构建中断错误应该是我在Swift中进行TDD时得到的错误?谢谢!
我正在学习如何使用 py.test 编写测试,但我不知道如何模拟外部调用。
假设我有一个测试代码:
应用程序.py:
import random
def trade_robot(stock, price):
return ' '.join((random.choice(('buy', 'sell', 'keep')), stock))
Run Code Online (Sandbox Code Playgroud)
我想确保我检查 random.choice 的情况,决定我需要购买(并且我想检查它是否正确连接“购买”情况的字符串)。
我的测试代码应该如下所示:
import pytest
from app import trade_robot
import sys
def test_buy_case():
# some mock magic here
assert trade_robot('AAPL', 500) == 'buy AAPL'
if __name__ == "__main__":
pytest.main("-v %s" % sys.argv[0])
Run Code Online (Sandbox Code Playgroud)
“一些模拟魔法”中应该包含什么才能使该测试每次都通过?谢谢!
我有一个简单的类,其中包含一个列表:
public class SomeClass {
private AppDataSource appDataSource; // it's interface
private List<Object> someList;
////
public List<Obejct> loadSomeList() {
if (someList == null) {
return appDataSource.getListFromDatabase();
}
retrunf someList;
}
}
Run Code Online (Sandbox Code Playgroud)
关键是 - 我希望该列表仅从DB加载一次.我想对这个功能进行单元测试.我是TDD中的noob,我能做的就是 - 为someList编写一个公共getter和setter,并在单元测试中使用它们.但它在概念上是错误的 - 我不希望类的客户端使用此成员变量directlty.
在这种情况下如何正确测试方法?
这是我的 dao 类,谁能告诉我这个 dao 方法的模式。
public String getProcessNames() throws IOException{
Gson gson=new Gson();
JSONObject output=new JSONObject();
String responseGson;
Session session = ConnectionDAO.getBoltSession();
String query = qpObj.getQueryValue("neo4j.processMonitor.getProcessNames");
StatementResult result = session.run(query);
JSONArray dataArray= new JSONArray();
try{
while ( result.hasNext() )
{
Record record = result.next();
responseGson=gson.toJson(record.asMap());
JSONObject responseJson=new JSONObject(responseGson);
dataArray.put(responseJson.get("ProcessName"));
output.put("results",dataArray);
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
if(session.isOpen()){
session.close();
}
}
return output.toString();
}
Run Code Online (Sandbox Code Playgroud)
或者任何人都可以提供直接链接以供参考,这对我有好处。谢谢
我是TDD的新手,我想在Age组件中测试我的回调函数:我的Age.js文件如下:
import React, { Component } from "react";
import { connect } from "react-redux";
import actions from "../../actions";
import TextFieldComponent from "../Module/TextFieldComponent";
export class Age extends Component {
ageValueCallBack = age => {
console.log("value is : ", age);
this.props.selectAgeAction(age)
};
render() {
const props = {
onChange: this.ageValueCallBack,
hintText : 'Eg. 25',
floatingLabelText: "Age(Years)",
value : (this.props.usersData) ? this.props.usersData.basic.age : null
};
return <TextFieldComponent {...props} />;
}
}
function mapStateToProps({ usersData }) {
return {
usersData
};
} …Run Code Online (Sandbox Code Playgroud) 到目前为止,我有 2 个问题,我正在寻找答案 3 天,但无法弄清楚。
1. 测试时应该什么时候连接数据库?
2. 我在运行测试时总是遇到错误:{ "before each" hook for "should list all books on /book GET" } 并且还没有找到解决方案或确切原因。我究竟做错了什么?到目前为止,我唯一的答案是不要在 beforeEach() 中两次调用 done() 但我没有这样做......
var chai = require('chai'),
expect = chai.expect,
request = require('request'),
mongoose = require('mongoose'),
Book = require('./../models/book');
// book = require('../model')
mongoose.createConnection('mongodb://localhost/books');
describe('Testing the routes', () => {
beforeEach((done) => {
Book.remove({}, (err) => {
if (err) {
console.log(err);
}
});
var newBook = new Book();
newBook.title = "Lord Of The Rings";
newBook.author = "J. …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的项目开发测试,我有一个连接到rabbitmq并消耗队列的文件,但我在测试它时遇到了问题
const amqp = require('amqplib/callback_api');
const rabbitConsumer = (io) => {
setTimeout(() => {
amqp.connect('amqp://rabbitmq', (error0, connection) => {
if (error0) {
throw error0;
}
connection.createChannel((error1, channel) => {
if (error1) {
throw error1;
}
const queue = 'message';
channel.assertQueue(queue, {
durable: false,
});
console.log(' [*] Waiting for message', queue);
channel.consume(
queue,
(data) => {
console.log(' [x] Received data:', data.content.toString('utf-8'));
io.emit('sendMessage', data.content.toString('utf-8'));
},
{
noAck: true,
}
);
});
});
}, 10000);
};
module.exports = rabbitConsumer;
Run Code Online (Sandbox Code Playgroud)
可以测试这个文件吗?我如何使用 JEST 或任何其他库来做到这一点?