我有一个算法可以在摄氏度和华氏度之间转换值。为了测试它是否适用于各种值,我使用 NUnit 的测试用例,如下所示:
[TestCase( 0, Result = -17.778 )]
[TestCase( 50, Result = 10 )]
public double FahrenheitToCelsius(double val) {
return (val - 32) / 1.8;
}
Run Code Online (Sandbox Code Playgroud)
问题是第一个测试用例失败,因为它测试完全匹配。
我发现的一种解决方案是执行以下操作:
[TestCase( 0, -17.778 )]
[TestCase( 50, 10 )]
public void FahrenheitToCelsius2(double val, double expected) {
double result = (val - 32) / 1.8;
Assert.AreEqual( expected, result, 0.005 );
}
Run Code Online (Sandbox Code Playgroud)
但我对此不太满意。我的问题是:
可以在测试用例中定义结果的容差吗?
更新:
为了澄清,我正在寻找类似的内容:
[TestCase( 0, Result = 1.1, Tolerance = 0.05 )]
Run Code Online (Sandbox Code Playgroud) 在RSpec我可以存根这样的方法:
allow(company).to receive(:foo){300}
Run Code Online (Sandbox Code Playgroud)
我怎样才能存根一个方法ActiveSupport::TestCase?
我有一个这样的测试。
class CompanyTest < ActiveSupport::TestCase
test 'foobar' do
company = companies(:base)
#company.stubs(:foo).returns(300)
assert_nil(company.calculate_bar)
end
end
Run Code Online (Sandbox Code Playgroud) Visual Studio 2017 for .Net core 项目中缺少“创建单元测试”上下文菜单选项?
我读到一些文章说“创建单元测试”上下文菜单选项在 VS2017/Core/x64 配置中被删除。但那些都是旧文章了。那么,想检查一下这个选项现在是否可用?如果没有,我们是否有其他替代方案(扩展)来生成测试用例?如果是这样,请告诉我步骤。
我正在开发 VS 2017/.NetCore 2.0 项目。
感谢你的帮助!
unit-testing testcase asp.net-core-webapi visual-studio-2017 asp.net-core-2.0
我有一种产生副作用的方法,即使标记了某些变量final.为什么是这样?也许我对这是什么感到困惑final.
@Test
public void testSubGraph() {
WeightedGraph<String, DefaultWeightedEdge> g = generateSimpleCaseGraph();
Graph<String, DefaultWeightedEdge> sub = ChooseRoot.subgraphInDirection(g, "alpha", "l");
assertEquals(g, generateSimpleCaseGraph()); //fails
}
public static <V, E extends DefaultEdge> Graph<V, E> subgraphInDirection(final Graph<V, E> g, final V start, final V sink) {
Graph<V, E> sub = removeEdges(g, start, sink);
return removeUnconnectedNodes(sub, start);
}
private static <Vertex, Edge extends DefaultEdge> Graph<Vertex, Edge> removeEdges(final Graph<Vertex, Edge> g, Vertex start, Vertex sink) {
final Set<Edge> outEdges = new HashSet<Edge>(g.edgesOf(start));
boolean …Run Code Online (Sandbox Code Playgroud) 这是我项目中的一个简单结构:
MyAPP---
note---
__init__.py
views.py
urls.py
test.py
models.py
auth--
...
template---
auth---
login.html
register.html
note---
noteshow.html
media---
css---
...
js---
...
settings.py
urls.py
__init__.py
manage.py
Run Code Online (Sandbox Code Playgroud)
我想制作一个单元测试,可以测试noteshow页面是否正常工作.
代码:
from django.test import TestCase
class Note(TestCase):
def test_noteshow(self):
response = self.client.get('/note/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, '/note/noteshow.html')
Run Code Online (Sandbox Code Playgroud)
问题是我的项目包含一个auth mod,它会强制unlogin用户在访问noteshow.html时重定向到login.html页面.
因此,当我运行我的unittest时,在bash中它会引发一个失败,即response.status_code总是302而不是200.
好吧,虽然通过这个结果我可以检查auth mod运行良好,它不像我想要的那样.
好的,问题是我怎样才能使用另一个单元测试来检查我的noteshow.template是否被使用?
谢谢大家.
django版本:1.1.1
python版本:2.6.4
将Eclipse用于MAC OS
我使用spring为JPA编写了一个JUnit测试用例.测试用例通过eclips.但是如果我使用maven(mvn test)执行相同的测试用例,它就会失败.
我的测试用例是:
import javax.annotation.Resource;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:config/servicecontext-standalone.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional
public class UserServiceImplTest extends TestCase {
@Resource(name = "UserService")
private UserService userService;
public UserServiceImplTest() {
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
@Test
public void testFindUser() {
try {
UserFindRequest pUserFindRequest = new UserFindRequest();
pUserFindRequest.setUserId(1);
UserServiceImpl aUserServiceImpl = (UserServiceImpl) this …Run Code Online (Sandbox Code Playgroud) 假设我有一个方法将一些数据填充到列表中,它在内部调用另一个方法(我正在独立测试)并将一些数据填充到列表中.这里有什么最好的测试方法?
如何测试外部方法?我是否应该从内部方法检查数据,否则只测试外部方法填充的数据?
我是单元测试用例写作的新手.我在WPF中使用MVVMLigh.是否有必要使用一些第三方测试框架或.Net Unit测试框架呢?另外如何在单元测试用例中处理静态类?在这种情况下AppMessages类.
有人可以指导我如何编写以下代码的单元格:
public MyViewModel(Participant participant)
{
if (participant != null)
{
this.ParentModel = parentModel;
OkCommand = new RelayCommand(() => OkCommandExecute());
CalculateAmountCommand = new RelayCommand(() => CalculateAmount());
}
else
{
ExceptionLogger.Instance.LogException(Constants.ErrorMessages.FinancialLineCanNotBeNull, "FinancialLineViewModel");
AppMessages.DisplayDialogMessage.Send(Constants.ErrorMessages.FinancialLineCanNotBeNull, MessageBoxButton.OK, Constants.DefaultCaption, null);
}
}
public static class AppMessages
{
enum AppMessageTypes
{
FinancialLineViewDisplay,
FinancialLineViewClose,
DisplayDialogMessage
}
public static class DisplayDialogMessage
{
public static void Send(string message, MessageBoxButton button, string caption, System.Action<MessageBoxResult> action)
{
DialogMessage dialogMessage = new DialogMessage(message, action)
{
Button = button,
Caption = caption …Run Code Online (Sandbox Code Playgroud) 是否可以使用可在多个测试类中使用的通用@Before和@After固定装置?
我已根据模块(库存,销售,采购等)将测试(分类)分开.对于所有这些测试,用户登录是一个先决条件,目前我正在@Before为每个类使用它.问题是当我需要更改用户ID或密码时,我需要更改每个类.有没有办法编写@Before/ @After可以在所有测试类中使用?在这种情况下,测试套件是否可以派上用场?
我能够test_case.t为Perl模块编写单元测试ModuleOne.pm
test_case.t
use strict;
use warnings;
use Test::More;
use Test::Cmd;
use ModuleOne; # Included the module here
my $ret = ModuleOne::methodone(args);
is($ret->{val}, 1, "Checking return value"); # success
Run Code Online (Sandbox Code Playgroud)
我正在尝试为Perl脚本实现相同的单元测试用例 script_one.pl
script_one.pl
use strict;
use warnings;
use ModuleOne;
my $NAME;
my $ID;
# get parameters
GetOptions (
"name" => \$NAME,
"emp_id" => \$ID,
)
validate_params();
sub validate_params {
# this method will validate params
}
sub print_name {
# this method will print name
}
Run Code Online (Sandbox Code Playgroud)
我如何script_one.pl在这个Perl文件中包含 …