Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何通过单元测试计算出一个矩形布局?_Wpf_Unit Testing - Fatal编程技术网

Wpf 如何通过单元测试计算出一个矩形布局?

Wpf 如何通过单元测试计算出一个矩形布局?,wpf,unit-testing,Wpf,Unit Testing,我打算按照中的建议写一些附加属性 我编写了以下单元测试: private const double Dimension = 10.0; [Test] [RequiresSTA] public void Gets_ActualWidth() { var rectangle = new Rectangle() { Width = Dimension, Height = Dimension }; double actualWid

我打算按照中的建议写一些附加属性

我编写了以下单元测试:

    private const double Dimension = 10.0;

    [Test]
    [RequiresSTA]
    public void Gets_ActualWidth()
    {
        var rectangle = new Rectangle() { Width = Dimension, Height = Dimension };
        double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
        Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
    }
但这太幼稚了,矩形的实际宽度为0,因为没有计算布局

有没有一个简单的方法,我可以得到一个矩形与它的布局计算

我尝试将其添加到StackPanel并调用Arrange(new Rect(0,0,20,20)),但仍然得到一个实际宽度/实际高度=0.0d的矩形


解决方案

    [Test]
    [RequiresSTA]
    public void Gets_ActualWidth()
    {
        var rectangle = new Rectangle() { Width = Dimension, Height = Dimension};
        rectangle.Measure(new Size(20, 20));
        rectangle.Arrange(new Rect(0, 0, 20, 20));
        double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
        Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
    }

我看不出你叫Measure。应在Arrange之前调用,否则Arrange将失败,因为所有内容的DesiredSize均为0,0

myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));

我看不出你叫Measure。应在Arrange之前调用,否则Arrange将失败,因为所有内容的DesiredSize均为0,0

myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));

那太好了,谢谢,我也不需要StackPanel,请参阅我的工作单元测试编辑。在这种情况下为真。但是,有些对象确实需要添加到父对象中(例如,如果您希望确保应用模板)。这很好,谢谢,我也不需要StackPanel,请参阅我的编辑以获得工作单元测试。对于这种情况,为True。但是,某些对象确实需要添加到父对象中(例如,如果要确保应用模板)。