小编Eri*_*fer的帖子

进行单元测试时的C#"内部"访问修饰符

我是单元测试的新手,我正在试图弄清楚是否应该开始使用更多的"内部"访问修饰符.我知道如果我们使用'internal'并设置汇编变量'InternalsVisibleTo',我们可以测试我们不想从测试项目声明公共的函数.这让我觉得我应该总是使用'​​内部',因为至少每个项目(应该?)都有它自己的测试项目.你们能告诉我为什么不这样做吗?我什么时候应该使用'私人'?

.net c# tdd unit-testing

419
推荐指数
7
解决办法
12万
查看次数

Java:如何测试调用System.exit()的方法?

我有一些方法可以调用System.exit()某些输入.不幸的是,测试这些情况会导致JUnit终止!将方法调用放在新线程中似乎没有帮助,因为System.exit()终止JVM,而不仅仅是当前线程.是否有任何常见的处理方式?例如,我可以替换存根System.exit()吗?

[编辑]有问题的类实际上是一个命令行工具,我试图在JUnit中测试.也许JUnit根本不适合这份工作?建议使用补充回归测试工具(最好是与JUnit和EclEmma完美集成的东西).

java junit multithreading unit-testing testability

187
推荐指数
9
解决办法
8万
查看次数

C# - 你怎么停止计时器?

我知道这听起来很愚蠢,但我已经尝试了一切来停止计时器,但计时器不会停止.我正在做一个游戏,如果有人能告诉我如何停止计时器,我将不胜感激.

.net c# timer

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

Git:有没有办法弄清楚提交的选择在哪里?

如果我从多个分支中挑选,是否有一种简单的方法来确定提交的来源(例如原始提交的sha)?

示例:
- 在主分支
- 来自开发分支的樱桃选择提交A
- A在主分支处变为D.

之前:

* B (master) Feature Y
| * C (dev) Feature Z
| * A Feature X
|/
* 3
* 2
* 1  
Run Code Online (Sandbox Code Playgroud)

后:

* D (master) Feature X
* B Feature Y
| * C (dev) Feature Z
| * A Feature X
|/
* 3
* 2
* 1  
Run Code Online (Sandbox Code Playgroud)

是否有可能弄清楚D是从A中挑选出来的(除了搜索提交消息)?

编辑:
虽然我会使用daggy-fixes(请参阅VonCs回答)我接受了Chris Johnsens的回答,因为它更接近实际问题.多谢你们.

git version-control

35
推荐指数
3
解决办法
1万
查看次数

WPF Button.IsCancel属性如何工作?

"取消"按钮背后的基本思想是使用Escape Keypress关闭窗口.

您可以将"取消"按钮上的IsCancel属性设置为true,从而使"取消"按钮自动关闭对话框而不处理Click事件.

资料来源:编程WPF(格里菲斯,卖出)

所以这应该工作

<Window>
<Button Name="btnCancel" IsCancel="True">_Close</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)

然而,我期望的行为并不适合我.父窗口是Application.StartupUri属性指定的主应用程序窗口.有效的是

<Button Name="btnCancel" IsCancel=True" Click="CloseWindow">_Close</Button>

private void CloseWindow(object sender, RoutedEventArgs) 
{
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)
  • 根据窗口是普通窗口还是对话框,IsCancel的行为是否不同?只有在调用ShowDialog时,IsCancel才能像宣传的那样工作吗?
  • 按钮是否需要显式的Click处理程序(IsCancel设置为true)才能关闭Escape印刷机上的窗口?

wpf button

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

事件订阅者是按订阅顺序调用的吗?

假设按订阅顺序调用事件订阅者是否安全?
例:

void One(object sender, EventArgs e) {}
void Two(object sender, EventArgs e) {}

event EventHandler foo;

foo += One;
foo += Two;
Run Code Online (Sandbox Code Playgroud)

当事件被触发时,One()总是在Two()之前调用吗?

编辑:
你应该不依赖它,我只是想.这个想法是,多播代表与COMMAND模式类似.所以我只是想知道.通常你会使用一个保存COMMAND命令的集合,这样你就可以做undo/redo/whatever.

.net c# events .net-2.0 c#-2.0

25
推荐指数
3
解决办法
9997
查看次数

C#:获取列表中所有项的任意属性的最大值和最小值

我有一个专门的列表,其中包含以下类型的项目IThing:

public class ThingList : IList<IThing>
{...}

public interface IThing
{
    Decimal Weight { get; set; }
    Decimal Velocity { get; set; }
    Decimal Distance { get; set; }
    Decimal Age { get; set; }
    Decimal AnotherValue { get; set; }

    [...even more properties and methods...]
}
Run Code Online (Sandbox Code Playgroud)

有时我需要知道列表中所有内容的某个属性的最大值或最小值.因为"告诉不要问"我们让列表弄明白:

public class ThingList : IList<IThing>
{
    public Decimal GetMaximumWeight()
    {
        Decimal result = 0;
        foreach (IThing thing in this) {
            result = Math.Max(result, thing.Weight);
        }
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是非常好的.但有时我需要最小重量,有时最大速度等等.我不希望 …

.net c# reflection .net-2.0

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

Invoke()正在阻塞

我的应用程序GUI有时会停止重绘.有许多线程正在触发各种事件(如计时器或网络数据准备等).还有很多控件正在订阅这些事件.因此,所有事件处理程序都会播放InvokeRequired/Invoke游戏.现在我发现当GUI冻结时,很多线程都在等待Invoke()返回.看起来消息泵停止泵送.处理程序看起来像这样:

private void MyEventHandler( object sender, EventArgs e ) {
    if ( InvokeRequired ) {
        Invoke( new EventHandler( MyEventHandler ), sender, e );
        return;
    }

    SetSomeStateVariable();
    Invalidate();
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

解决方案:BeginInvoke().看起来如果你有很多CrossThread-Events,你应该总是使用BeginInvoke()......

谢谢.

谢谢大家.

编辑:看起来BeginInvoke()真的解决了它.直到现在都没有冻结.

.net c# .net-2.0 winforms

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

单元测试MFC UI应用程序?

如何对大型MFC UI应用程序进行单元测试?

我们有一些大型MFC应用程序已经开发多年,我们使用一些标准的自动化QA工具来运行基本脚本来检查基础,文件打开等.这些由QA小组在每日构建后发布.

但我们想介绍一些过程,以便各个开发人员可以在将代码提交到每日构建之前,根据对话框,菜单和应用程序的其他可视元素构建和运行测试.

我听说过只有在调试版本中出现的对话框上的隐藏测试按钮等技术,是否有任何标准工具包.

环境是C++/C/FORTRAN,MSVC 2005,Intel FORTRAN 9.1,Windows XP/Vista x86和x64.

c++ tdd user-interface mfc unit-testing

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

使用@Slf4j注释创建时如何模拟Logger?

我有一个带有 @Slf4j 注释的类。

我尝试编写一个测试并模拟记录器,但它不起作用。

@RequiredArgsConstructor
@Slf4j
public abstract class ExampleClass {
    
    protected final PropsClass properties;
    
    protected void logInfo(..) {
        log.info(...);
        clearMappedDiagnosticContext();
    }
}
Run Code Online (Sandbox Code Playgroud)

测试如下所示:

@RunWith(MockitoJUnitRunner.class)
public class ExampleClassTest {
    
    @Mock
    Logger logger;
    
    @Mock
    PropsClass properties;
    
    @InjectMocks
    ExampleClass exampleClass;
    
    @Test
    public void logSomethingtest() {
        ...
        exampleClass.logInfo(...);
        Mockito.verify(logger).info(marker, "foo bar {}", ...);
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Wanted but not invoked:
logger.info(
    MY_MARKER,
    "..........",
    "....",
    "....",
    0L
);

Actually, there were zero interactions with this mock.
Run Code Online (Sandbox Code Playgroud)

问题是,如何模拟 Logger?

java junit unit-testing slf4j mockito

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