小编fee*_*0de的帖子

将单元测试标记为JUnit中的预期故障

如何将测试标记为JUnit 4中的预期故障?

在这种情况下,我想继续运行此测试,直到上游修补了一些内容.忽略测试有点太过分了,因为那时我可能会忘记它.我可能能够添加一个@expected注释并捕获抛出的异常assertThat,但这似乎也与预期的行为有关.

这是我目前的测试结果:

@Test
public void unmarshalledDocumentHasExpectedValue() 
{
    doc = unmarshaller.unmarshal(getResourceAsStream("mydoc.xml"));
    final ST title = doc.getTitle();
    assertThat(doc.getTitle().toStringContent(), equalTo("Expected"));
}
Run Code Online (Sandbox Code Playgroud)

该断言应该成功,但由于上游错误,它不会.然而,那个测试是正确的; 它应该成功.事实上,我发现的所有替代方案都具有误导性.现在我认为这@Ignore("This test should pass once fixed upstream")是我最好的选择,但我仍然要记得回到它.我更喜欢测试运行.

在Python中我可以使用expectedFailure装饰器:

class ExpectedFailureTestCase(unittest.TestCase):
    @unittest.expectedFailure
    def test_fail(self):
        self.assertEqual(1, 0, "broken")
Run Code Online (Sandbox Code Playgroud)

使用Ct中的Qt QTestLib,您可以使用QEXPECT_FAIL:

QEXPECT_FAIL("", "Will be fixed next version", Continue);
QCOMPARE(i, 42);
Run Code Online (Sandbox Code Playgroud)

在上面的两种情况下,单元测试运行,这是我希望发生的.我在JUnit中遗漏了什么吗?

java junit unit-testing

40
推荐指数
4
解决办法
4万
查看次数

如何在Visual Studio 2015中安装XNA(预览版)

如何在Visual Studio 2015中安装XNA的模板和框架?

我发现此页面有助于在Visual Studio 2013中安装XNA框架,但它们不提供Visual Studio 2015的任何下载.

我知道XNA不再由微软开发,但它是一个非常棒的框架,我需要在Future中使用.

xna visual-studio-2015

28
推荐指数
3
解决办法
5万
查看次数

如何反转QList?

我看到qCopyqCopybackward但似乎都没有让我以相反的顺序复制.qCopybackward只能以相反的顺序复制它,但保持darn元素的顺序相同!我想要做的就是以相反的顺序返回列表的副本.有成为一个函数,对不对?

qt

26
推荐指数
7
解决办法
3万
查看次数

将值从本地堆栈移动到堆?(C++)

如何从方法调用中获取对象值作为结果并将其放在堆上?

例如:

Qt QImage::scaledToWidth方法返回QImage对象的副本.

现在我正在做:

QImage *new_img_on_heap = new QImage(old_imgage_on_heap->scaledToWidth(2000));
Run Code Online (Sandbox Code Playgroud)

这是唯一的方法吗?看起来它已经经历了制作第三个全新物体的麻烦,当我已经在堆栈上有一个完美的好物品时.

我想把它放在堆上的原因是因为真实QImage的很大,我希望它比当前方法的生命周期更长.我打算在我班上的一个字段中填充指针.

我知道QImage有一些隐含的数据共享,但我并不清楚它是如何工作的.另外,我想知道一个通​​用的解决方案,如果我需要使用不像Qt那样精心设计的对象.

c++ heap stack

25
推荐指数
2
解决办法
9747
查看次数

主线程繁忙时如何使Qt工作?

Main(函数main在那里)我的程序的线程保留用于非GUI任务.它调用了许多冗长的计算功能.所有已实现的GUI都在一个单独的线程中完成它们的工作.

我现在要使用Qt实现一个GUI.Qt文档说所有GUI相关的任务都应该在主线程中完成.在我的例子中,在主线程中偶尔插入QCoreApplication :: processEvents()调用几乎没用,因为它们之间有很大的延迟.

有没有办法克服Qt的这种约束?是不可能在Qt程序的主线程中做一些非GUI相关的事情?

qt multithreading

24
推荐指数
3
解决办法
2万
查看次数

如何指定输入QMake INSTALLS变量?

在我的Qt项目中,我正在尝试复制库作为构建过程的一部分.目标是在构建完成后使用所有必需的动态库进行现成的分发.

使用INSTALLS变量似乎是可行的,但我发现文档有点薄: qmake变量参考:INSTALLS

在给出的例子中:

  • target已经被定义,或者是通过写定义target.path =
  • 可能会员的文件在哪里?.path和......?

qt qmake

22
推荐指数
2
解决办法
2万
查看次数

C++:如何将fprintf结果作为std :: string w/o sprintf

我正在使用一个用C++实现的开源UNIX工具,我需要更改一些代码才能让它做我想做的事情.我想做出尽可能小的改变,希望上传接受我的补丁.可以在标准C++中实现并且不创建更多外部依赖性的解决方案是首选.

这是我的问题.我有一个C++类 - 我们称之为"A" - 目前使用fprintf()将其格式严格的数据结构打印到文件指针.在其print函数中,它还递归调用几个成员类的相同定义的打印函数("B"是一个例子).还有另一个C类,它有一个成员std :: string"foo",需要设置为A实例的print()结果.把它想象成A的to_str()成员函数.

在伪代码中:

class A {
public:
  ...

  void print(FILE* f);
  B b;

  ...  
};

...

void A::print(FILE *f)
{
  std::string s = "stuff";
  fprintf(f, "some %s", s);
  b.print(f);
}

class C {
  ...
  std::string foo;
  bool set_foo(std::str);
  ...
}

...

A a = new A();
C c = new C();

...

// wish i knew how to write A's to_str()
c.set_foo(a.to_str());
Run Code Online (Sandbox Code Playgroud)

我应该提到C是相当稳定的,但是A和B(以及A的其余部分)处于不稳定的状态,因此所需的代码变化越少越好.还需要保留当前的打印(FILE*F)界面.我已经考虑了几种实现A :: to_str()的方法,每种方法都有优点和缺点:

  1. 将对fprintf()的调用更改为sprintf()

    • 我不必重写任何格式字符串
    • print()可以重新实现为:fprint(f,this.to_str());
    • 但是我需要手动分配char [] s,合并很多c字符串,最后将字符数组转换为std :: string
  2. 尝试在字符串流中捕获a.print()的结果 …

c++ unix format printf stdstring

18
推荐指数
2
解决办法
3万
查看次数

Qt中有哪些功能或概念让你恼火?

Qt是一个很好的框架和优秀的UI工具包,它有许多有用的功能和概念.我们大多数人可能都同意,最近诺基亚的奇趣科技公司在开发它方面做得非常好.Qt的最新进展之一是QML,我发现它具有令人着迷的进步.

但是,我发现一些设计糟糕或执行不当的概念,例如模型/视图(概念很好,但实现不是),同样适用于Phonon媒体框架.有人说它的元对象概念让他们发疯.

所有这些显然或多或少都是主观的,但是你在Qt中使用哪些特征或概念令人烦恼或烦恼?你如何绕过它们?

qt qt4

17
推荐指数
3
解决办法
2677
查看次数

如何从QML中的GridView或ListView获取实例化的委托组件

我的难题一般来说是:通过GridView之外的一些动作,我想根据之前选择的特定模型项或索引来计算GridView中特定委托项的坐标.

我有一个GridView,其中有许多项目在模型中.GridView的委托创建每个项目的缩略图视图.单击时,它会显示项目的详细全屏视图.我想要一个很好的转换,它显示缩略图从GridView中的位置扩展出来,当详细视图被解除时,缩小回到GridView中.

诀窍是,详细视图本身就是ListView的委托,因此您可以一次在一个屏幕之间在详细视图之间进行分页.这意味着只需调整GridView的委托项目大小或某些内容的解决方案将无效.此外,由于您可以寻呼到ListView中的任何项目,因此必须仅基于模型中可用的信息或模型项目的索引来返回GridView(例如,我无法存储用于启动的模拟项目的鼠标的坐标.详细的观点或东西).

扩展动画相当简单,因为委托项具有一个用于知道其自身位置的单击处理程序的MouseArea,因此可以将其传递给启动动画的函数.这是我无法弄清楚的反过来:从ListView中的模型项/索引,我如何计算GridView中相关项的坐标?

我在文档中找不到任何似乎可以让您从模型项实例甚至索引访问委托项实例的内容.GridView具有indexAt()基于坐标返回索引的功能.我想我可以反过来做,但它似乎不存在.

这是一个更具体的例子.道歉; 这是我能想出的最准确的代码,它准确地描述了我的问题:

import QtQuick 1.1

Item {
    id: window
    width: 400
    height: 200

    state: "summary"
    states: [
        State { name: "summary"; },
        State { name: "details"; }
    ]
    transitions: [
        Transition { from: "summary"; to: "details";
            SequentialAnimation {
                PropertyAction { target: animationRect; property: "visible"; value: true; }
                ParallelAnimation {
                    NumberAnimation { target: animationRect; properties: "x,y"; to: 0; duration: 200; }
                    NumberAnimation { target: animationRect; property: "width"; to: 400; duration: 200; }
                    NumberAnimation { …
Run Code Online (Sandbox Code Playgroud)

qt qml

17
推荐指数
1
解决办法
4万
查看次数

什么是元编程?

关于这个问题,有人可以解释并发布元编程的示例代码吗?我用Google搜索了这个词,但我没有找到任何例子来说服它可以用于任何实际用途.

同样,Qt的元对象系统是元编程的一种形式吗?

JRH

c++ qt metaprogramming

15
推荐指数
4
解决办法
4085
查看次数